{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.etY455WX/b1/dune-localfunctions_2.9.0-2_i386.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.etY455WX/b2/dune-localfunctions_2.9.0-2_i386.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n 1a06ffa7f1c7d8f492657ac9351a718a 123740 libdevel optional libdune-localfunctions-dev_2.9.0-2_i386.deb\n- 992939eaab381118f0b7278034b1a3c7 5001220 doc optional libdune-localfunctions-doc_2.9.0-2_all.deb\n+ c9b2b28d672d09c1a4fd5b82172102fc 4997724 doc optional libdune-localfunctions-doc_2.9.0-2_all.deb\n"}, {"source1": "libdune-localfunctions-doc_2.9.0-2_all.deb", "source2": "libdune-localfunctions-doc_2.9.0-2_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 2023-01-12 22:15:36.000000 debian-binary\n--rw-r--r-- 0 0 0 34648 2023-01-12 22:15:36.000000 control.tar.xz\n--rw-r--r-- 0 0 0 4966380 2023-01-12 22:15:36.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 34668 2023-01-12 22:15:36.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 4962864 2023-01-12 22:15:36.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": "@@ -3,26 +3,24 @@\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 usr/share/doc/libdune-localfunctions-doc/doxygen/a00026_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00029.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00029_source.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html\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@@ -117,14 +115,20 @@\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00182_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00185.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00185_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00188.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00188_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00191.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00191_source.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00194.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00194_source.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00197.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00197_source.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html\n+usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00209.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00209_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html\n@@ -317,18 +321,14 @@\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00491_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00494.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00494_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00497.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00497_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00500.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00500_source.html\n-usr/share/doc/libdune-localfunctions-doc/doxygen/a00503.html\n-usr/share/doc/libdune-localfunctions-doc/doxygen/a00503_source.html\n-usr/share/doc/libdune-localfunctions-doc/doxygen/a00506.html\n-usr/share/doc/libdune-localfunctions-doc/doxygen/a00506_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00509.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00509_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00512.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00512_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00515.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00515_source.html\n usr/share/doc/libdune-localfunctions-doc/doxygen/a00518.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,376 +5,376 @@\n drwxr-xr-x 0 root (0) root (0) 0 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/\n -rw-r--r-- 0 root (0) root (0) 901 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/changelog.Debian.gz\n -rw-r--r-- 0 root (0) root (0) 2523 2022-10-20 18:18:11.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 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/\n -rw-r--r-- 0 root (0) root (0) 3061 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00002.html\n -rw-r--r-- 0 root (0) root (0) 3059 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00005.html\n--rw-r--r-- 0 root (0) root (0) 5310 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html\n--rw-r--r-- 0 root (0) root (0) 21392 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011_source.html\n--rw-r--r-- 0 root (0) root (0) 5966 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00014.html\n--rw-r--r-- 0 root (0) root (0) 30300 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00014_source.html\n--rw-r--r-- 0 root (0) root (0) 5112 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00017.html\n--rw-r--r-- 0 root (0) root (0) 13287 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00017_source.html\n--rw-r--r-- 0 root (0) root (0) 5364 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00020.html\n--rw-r--r-- 0 root (0) root (0) 21379 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00020_source.html\n--rw-r--r-- 0 root (0) root (0) 7278 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023.html\n--rw-r--r-- 0 root (0) root (0) 45331 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00023_source.html\n--rw-r--r-- 0 root (0) root (0) 6922 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026.html\n--rw-r--r-- 0 root (0) root (0) 45375 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026_source.html\n--rw-r--r-- 0 root (0) root (0) 6740 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029.html\n--rw-r--r-- 0 root (0) root (0) 119958 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029_source.html\n--rw-r--r-- 0 root (0) root (0) 5288 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html\n--rw-r--r-- 0 root (0) root (0) 18359 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html\n--rw-r--r-- 0 root (0) root (0) 5421 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html\n--rw-r--r-- 0 root (0) root (0) 18599 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html\n--rw-r--r-- 0 root (0) root (0) 5489 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html\n--rw-r--r-- 0 root (0) root (0) 36739 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044_source.html\n--rw-r--r-- 0 root (0) root (0) 6548 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047.html\n--rw-r--r-- 0 root (0) root (0) 44400 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047_source.html\n--rw-r--r-- 0 root (0) root (0) 5232 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050.html\n--rw-r--r-- 0 root (0) root (0) 23868 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050_source.html\n--rw-r--r-- 0 root (0) root (0) 6025 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html\n--rw-r--r-- 0 root (0) root (0) 37712 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html\n--rw-r--r-- 0 root (0) root (0) 5637 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html\n--rw-r--r-- 0 root (0) root (0) 76509 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_source.html\n--rw-r--r-- 0 root (0) root (0) 5147 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059.html\n--rw-r--r-- 0 root (0) root (0) 12107 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_source.html\n--rw-r--r-- 0 root (0) root (0) 5615 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062.html\n--rw-r--r-- 0 root (0) root (0) 67254 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062_source.html\n--rw-r--r-- 0 root (0) root (0) 6990 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065.html\n--rw-r--r-- 0 root (0) root (0) 151840 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065_source.html\n--rw-r--r-- 0 root (0) root (0) 5593 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068.html\n--rw-r--r-- 0 root (0) root (0) 63478 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068_source.html\n--rw-r--r-- 0 root (0) root (0) 6951 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071.html\n--rw-r--r-- 0 root (0) root (0) 51494 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071_source.html\n+-rw-r--r-- 0 root (0) root (0) 3686 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html\n+-rw-r--r-- 0 root (0) root (0) 6376 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011_source.html\n+-rw-r--r-- 0 root (0) root (0) 6301 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00014.html\n+-rw-r--r-- 0 root (0) root (0) 27028 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00014_source.html\n+-rw-r--r-- 0 root (0) root (0) 7278 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026.html\n+-rw-r--r-- 0 root (0) root (0) 45331 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00026_source.html\n+-rw-r--r-- 0 root (0) root (0) 5310 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029.html\n+-rw-r--r-- 0 root (0) root (0) 21392 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00029_source.html\n+-rw-r--r-- 0 root (0) root (0) 5112 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html\n+-rw-r--r-- 0 root (0) root (0) 13287 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html\n+-rw-r--r-- 0 root (0) root (0) 5966 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035.html\n+-rw-r--r-- 0 root (0) root (0) 30300 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00035_source.html\n+-rw-r--r-- 0 root (0) root (0) 6740 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html\n+-rw-r--r-- 0 root (0) root (0) 119958 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038_source.html\n+-rw-r--r-- 0 root (0) root (0) 5364 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041.html\n+-rw-r--r-- 0 root (0) root (0) 21379 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00041_source.html\n+-rw-r--r-- 0 root (0) root (0) 6922 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044.html\n+-rw-r--r-- 0 root (0) root (0) 45375 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00044_source.html\n+-rw-r--r-- 0 root (0) root (0) 4036 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047.html\n+-rw-r--r-- 0 root (0) root (0) 5073 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00047_source.html\n+-rw-r--r-- 0 root (0) root (0) 5489 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050.html\n+-rw-r--r-- 0 root (0) root (0) 36739 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00050_source.html\n+-rw-r--r-- 0 root (0) root (0) 5034 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053.html\n+-rw-r--r-- 0 root (0) root (0) 27566 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00053_source.html\n+-rw-r--r-- 0 root (0) root (0) 5033 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html\n+-rw-r--r-- 0 root (0) root (0) 29438 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_source.html\n+-rw-r--r-- 0 root (0) root (0) 5162 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059.html\n+-rw-r--r-- 0 root (0) root (0) 9899 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_source.html\n+-rw-r--r-- 0 root (0) root (0) 5237 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062.html\n+-rw-r--r-- 0 root (0) root (0) 14301 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062_source.html\n+-rw-r--r-- 0 root (0) root (0) 3901 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065.html\n+-rw-r--r-- 0 root (0) root (0) 4724 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00065_source.html\n+-rw-r--r-- 0 root (0) root (0) 5079 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068.html\n+-rw-r--r-- 0 root (0) root (0) 15535 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00068_source.html\n+-rw-r--r-- 0 root (0) root (0) 5014 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071.html\n+-rw-r--r-- 0 root (0) root (0) 18914 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071_source.html\n -rw-r--r-- 0 root (0) root (0) 4967 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html\n -rw-r--r-- 0 root (0) root (0) 12218 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074_source.html\n--rw-r--r-- 0 root (0) root (0) 5014 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html\n--rw-r--r-- 0 root (0) root (0) 18914 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html\n--rw-r--r-- 0 root (0) root (0) 5181 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html\n--rw-r--r-- 0 root (0) root (0) 21612 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080_source.html\n--rw-r--r-- 0 root (0) root (0) 4912 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083.html\n--rw-r--r-- 0 root (0) root (0) 19133 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083_source.html\n--rw-r--r-- 0 root (0) root (0) 6689 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086.html\n--rw-r--r-- 0 root (0) root (0) 60063 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086_source.html\n--rw-r--r-- 0 root (0) root (0) 5195 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089.html\n--rw-r--r-- 0 root (0) root (0) 20872 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089_source.html\n--rw-r--r-- 0 root (0) root (0) 5273 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html\n--rw-r--r-- 0 root (0) root (0) 41303 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092_source.html\n--rw-r--r-- 0 root (0) root (0) 4911 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095.html\n--rw-r--r-- 0 root (0) root (0) 15970 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095_source.html\n--rw-r--r-- 0 root (0) root (0) 7961 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098.html\n--rw-r--r-- 0 root (0) root (0) 80165 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098_source.html\n--rw-r--r-- 0 root (0) root (0) 5015 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html\n--rw-r--r-- 0 root (0) root (0) 21493 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101_source.html\n--rw-r--r-- 0 root (0) root (0) 5188 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104.html\n--rw-r--r-- 0 root (0) root (0) 12770 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104_source.html\n--rw-r--r-- 0 root (0) root (0) 5149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107.html\n--rw-r--r-- 0 root (0) root (0) 25785 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107_source.html\n--rw-r--r-- 0 root (0) root (0) 4867 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110.html\n--rw-r--r-- 0 root (0) root (0) 13745 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110_source.html\n--rw-r--r-- 0 root (0) root (0) 5079 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113.html\n--rw-r--r-- 0 root (0) root (0) 12420 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113_source.html\n--rw-r--r-- 0 root (0) root (0) 5718 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116.html\n--rw-r--r-- 0 root (0) root (0) 41175 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116_source.html\n--rw-r--r-- 0 root (0) root (0) 5297 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119.html\n--rw-r--r-- 0 root (0) root (0) 20462 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119_source.html\n--rw-r--r-- 0 root (0) root (0) 5198 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122.html\n--rw-r--r-- 0 root (0) root (0) 29359 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122_source.html\n--rw-r--r-- 0 root (0) root (0) 5108 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125.html\n--rw-r--r-- 0 root (0) root (0) 12405 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125_source.html\n--rw-r--r-- 0 root (0) root (0) 5027 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128.html\n--rw-r--r-- 0 root (0) root (0) 16874 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128_source.html\n--rw-r--r-- 0 root (0) root (0) 5007 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131.html\n--rw-r--r-- 0 root (0) root (0) 22753 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131_source.html\n--rw-r--r-- 0 root (0) root (0) 4173 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134.html\n--rw-r--r-- 0 root (0) root (0) 5446 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134_source.html\n--rw-r--r-- 0 root (0) root (0) 5773 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137.html\n--rw-r--r-- 0 root (0) root (0) 29864 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137_source.html\n--rw-r--r-- 0 root (0) root (0) 4833 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140.html\n--rw-r--r-- 0 root (0) root (0) 20084 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140_source.html\n--rw-r--r-- 0 root (0) root (0) 7817 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143.html\n--rw-r--r-- 0 root (0) root (0) 43351 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143_source.html\n--rw-r--r-- 0 root (0) root (0) 8318 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146.html\n--rw-r--r-- 0 root (0) root (0) 60254 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146_source.html\n--rw-r--r-- 0 root (0) root (0) 7329 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149.html\n--rw-r--r-- 0 root (0) root (0) 76679 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149_source.html\n--rw-r--r-- 0 root (0) root (0) 4720 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152.html\n--rw-r--r-- 0 root (0) root (0) 8887 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152_source.html\n--rw-r--r-- 0 root (0) root (0) 5511 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155.html\n--rw-r--r-- 0 root (0) root (0) 22820 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155_source.html\n--rw-r--r-- 0 root (0) root (0) 7727 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158.html\n--rw-r--r-- 0 root (0) root (0) 53428 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158_source.html\n--rw-r--r-- 0 root (0) root (0) 5559 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161.html\n--rw-r--r-- 0 root (0) root (0) 61782 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161_source.html\n--rw-r--r-- 0 root (0) root (0) 5635 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164.html\n--rw-r--r-- 0 root (0) root (0) 40032 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164_source.html\n--rw-r--r-- 0 root (0) root (0) 5214 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167.html\n--rw-r--r-- 0 root (0) root (0) 10366 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167_source.html\n--rw-r--r-- 0 root (0) root (0) 5033 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170.html\n--rw-r--r-- 0 root (0) root (0) 29438 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170_source.html\n--rw-r--r-- 0 root (0) root (0) 5034 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173.html\n--rw-r--r-- 0 root (0) root (0) 27566 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173_source.html\n--rw-r--r-- 0 root (0) root (0) 5162 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176.html\n--rw-r--r-- 0 root (0) root (0) 9899 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176_source.html\n--rw-r--r-- 0 root (0) root (0) 5079 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179.html\n--rw-r--r-- 0 root (0) root (0) 15535 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179_source.html\n--rw-r--r-- 0 root (0) root (0) 5237 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182.html\n--rw-r--r-- 0 root (0) root (0) 14301 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182_source.html\n--rw-r--r-- 0 root (0) root (0) 3901 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185.html\n--rw-r--r-- 0 root (0) root (0) 4724 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185_source.html\n--rw-r--r-- 0 root (0) root (0) 3686 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188.html\n--rw-r--r-- 0 root (0) root (0) 6376 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188_source.html\n--rw-r--r-- 0 root (0) root (0) 5053 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191.html\n--rw-r--r-- 0 root (0) root (0) 10752 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191_source.html\n--rw-r--r-- 0 root (0) root (0) 6113 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html\n--rw-r--r-- 0 root (0) root (0) 24674 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html\n--rw-r--r-- 0 root (0) root (0) 5062 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html\n--rw-r--r-- 0 root (0) root (0) 7775 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html\n--rw-r--r-- 0 root (0) root (0) 7791 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209.html\n--rw-r--r-- 0 root (0) root (0) 50578 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209_source.html\n--rw-r--r-- 0 root (0) root (0) 7043 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html\n--rw-r--r-- 0 root (0) root (0) 27987 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212_source.html\n--rw-r--r-- 0 root (0) root (0) 5061 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215.html\n--rw-r--r-- 0 root (0) root (0) 9362 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215_source.html\n--rw-r--r-- 0 root (0) root (0) 6230 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218.html\n--rw-r--r-- 0 root (0) root (0) 13798 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218_source.html\n--rw-r--r-- 0 root (0) root (0) 7362 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221.html\n--rw-r--r-- 0 root (0) root (0) 42738 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221_source.html\n--rw-r--r-- 0 root (0) root (0) 7251 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224.html\n--rw-r--r-- 0 root (0) root (0) 27987 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224_source.html\n--rw-r--r-- 0 root (0) root (0) 5256 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227.html\n--rw-r--r-- 0 root (0) root (0) 7790 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227_source.html\n--rw-r--r-- 0 root (0) root (0) 4996 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230.html\n--rw-r--r-- 0 root (0) root (0) 24190 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230_source.html\n--rw-r--r-- 0 root (0) root (0) 6239 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233.html\n--rw-r--r-- 0 root (0) root (0) 23788 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233_source.html\n--rw-r--r-- 0 root (0) root (0) 5630 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236.html\n--rw-r--r-- 0 root (0) root (0) 102194 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236_source.html\n--rw-r--r-- 0 root (0) root (0) 5243 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239.html\n--rw-r--r-- 0 root (0) root (0) 7684 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239_source.html\n--rw-r--r-- 0 root (0) root (0) 5266 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242.html\n--rw-r--r-- 0 root (0) root (0) 7725 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242_source.html\n--rw-r--r-- 0 root (0) root (0) 5221 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245.html\n--rw-r--r-- 0 root (0) root (0) 7727 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245_source.html\n--rw-r--r-- 0 root (0) root (0) 5257 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248.html\n--rw-r--r-- 0 root (0) root (0) 7700 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248_source.html\n--rw-r--r-- 0 root (0) root (0) 5247 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251.html\n--rw-r--r-- 0 root (0) root (0) 7695 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251_source.html\n--rw-r--r-- 0 root (0) root (0) 5642 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254.html\n--rw-r--r-- 0 root (0) root (0) 110872 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254_source.html\n--rw-r--r-- 0 root (0) root (0) 5265 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257.html\n--rw-r--r-- 0 root (0) root (0) 7773 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257_source.html\n--rw-r--r-- 0 root (0) root (0) 5226 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260.html\n--rw-r--r-- 0 root (0) root (0) 7674 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260_source.html\n--rw-r--r-- 0 root (0) root (0) 5259 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263.html\n--rw-r--r-- 0 root (0) root (0) 20359 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263_source.html\n--rw-r--r-- 0 root (0) root (0) 4985 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266.html\n--rw-r--r-- 0 root (0) root (0) 14588 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266_source.html\n--rw-r--r-- 0 root (0) root (0) 5063 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269.html\n--rw-r--r-- 0 root (0) root (0) 33501 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269_source.html\n--rw-r--r-- 0 root (0) root (0) 5366 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272.html\n--rw-r--r-- 0 root (0) root (0) 13307 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272_source.html\n--rw-r--r-- 0 root (0) root (0) 5715 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275.html\n--rw-r--r-- 0 root (0) root (0) 132591 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275_source.html\n--rw-r--r-- 0 root (0) root (0) 4910 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278.html\n--rw-r--r-- 0 root (0) root (0) 11955 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278_source.html\n--rw-r--r-- 0 root (0) root (0) 5033 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281.html\n--rw-r--r-- 0 root (0) root (0) 19041 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281_source.html\n--rw-r--r-- 0 root (0) root (0) 5067 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284.html\n--rw-r--r-- 0 root (0) root (0) 11639 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284_source.html\n--rw-r--r-- 0 root (0) root (0) 5054 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287.html\n--rw-r--r-- 0 root (0) root (0) 7741 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287_source.html\n--rw-r--r-- 0 root (0) root (0) 5628 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290.html\n--rw-r--r-- 0 root (0) root (0) 119945 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290_source.html\n--rw-r--r-- 0 root (0) root (0) 4742 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293.html\n--rw-r--r-- 0 root (0) root (0) 19584 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293_source.html\n--rw-r--r-- 0 root (0) root (0) 5223 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296.html\n--rw-r--r-- 0 root (0) root (0) 92562 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296_source.html\n--rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299.html\n--rw-r--r-- 0 root (0) root (0) 13457 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299_source.html\n--rw-r--r-- 0 root (0) root (0) 5186 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302.html\n--rw-r--r-- 0 root (0) root (0) 25485 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302_source.html\n--rw-r--r-- 0 root (0) root (0) 5461 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305.html\n--rw-r--r-- 0 root (0) root (0) 21521 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305_source.html\n--rw-r--r-- 0 root (0) root (0) 5098 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308.html\n--rw-r--r-- 0 root (0) root (0) 12272 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308_source.html\n--rw-r--r-- 0 root (0) root (0) 5104 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311.html\n--rw-r--r-- 0 root (0) root (0) 15517 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311_source.html\n--rw-r--r-- 0 root (0) root (0) 5167 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314.html\n--rw-r--r-- 0 root (0) root (0) 24423 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314_source.html\n--rw-r--r-- 0 root (0) root (0) 5118 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317.html\n--rw-r--r-- 0 root (0) root (0) 12353 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317_source.html\n--rw-r--r-- 0 root (0) root (0) 5129 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320.html\n--rw-r--r-- 0 root (0) root (0) 25087 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320_source.html\n--rw-r--r-- 0 root (0) root (0) 5016 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323.html\n--rw-r--r-- 0 root (0) root (0) 15467 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323_source.html\n--rw-r--r-- 0 root (0) root (0) 5400 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326.html\n--rw-r--r-- 0 root (0) root (0) 21863 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326_source.html\n--rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329.html\n--rw-r--r-- 0 root (0) root (0) 13188 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329_source.html\n--rw-r--r-- 0 root (0) root (0) 5180 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332.html\n--rw-r--r-- 0 root (0) root (0) 51963 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332_source.html\n--rw-r--r-- 0 root (0) root (0) 5181 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335.html\n--rw-r--r-- 0 root (0) root (0) 21322 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335_source.html\n+-rw-r--r-- 0 root (0) root (0) 6951 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077.html\n+-rw-r--r-- 0 root (0) root (0) 51494 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00077_source.html\n+-rw-r--r-- 0 root (0) root (0) 5079 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080.html\n+-rw-r--r-- 0 root (0) root (0) 12420 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00080_source.html\n+-rw-r--r-- 0 root (0) root (0) 5149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083.html\n+-rw-r--r-- 0 root (0) root (0) 25785 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00083_source.html\n+-rw-r--r-- 0 root (0) root (0) 4867 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086.html\n+-rw-r--r-- 0 root (0) root (0) 13745 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00086_source.html\n+-rw-r--r-- 0 root (0) root (0) 5297 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089.html\n+-rw-r--r-- 0 root (0) root (0) 20462 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00089_source.html\n+-rw-r--r-- 0 root (0) root (0) 5027 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html\n+-rw-r--r-- 0 root (0) root (0) 16874 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092_source.html\n+-rw-r--r-- 0 root (0) root (0) 5108 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095.html\n+-rw-r--r-- 0 root (0) root (0) 12405 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00095_source.html\n+-rw-r--r-- 0 root (0) root (0) 5198 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098.html\n+-rw-r--r-- 0 root (0) root (0) 29359 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00098_source.html\n+-rw-r--r-- 0 root (0) root (0) 5007 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html\n+-rw-r--r-- 0 root (0) root (0) 22753 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101_source.html\n+-rw-r--r-- 0 root (0) root (0) 5718 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104.html\n+-rw-r--r-- 0 root (0) root (0) 41175 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00104_source.html\n+-rw-r--r-- 0 root (0) root (0) 5482 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107.html\n+-rw-r--r-- 0 root (0) root (0) 22236 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00107_source.html\n+-rw-r--r-- 0 root (0) root (0) 5142 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110.html\n+-rw-r--r-- 0 root (0) root (0) 13126 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00110_source.html\n+-rw-r--r-- 0 root (0) root (0) 5283 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113.html\n+-rw-r--r-- 0 root (0) root (0) 48607 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00113_source.html\n+-rw-r--r-- 0 root (0) root (0) 5204 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116.html\n+-rw-r--r-- 0 root (0) root (0) 23377 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00116_source.html\n+-rw-r--r-- 0 root (0) root (0) 5481 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119.html\n+-rw-r--r-- 0 root (0) root (0) 22348 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00119_source.html\n+-rw-r--r-- 0 root (0) root (0) 5460 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122.html\n+-rw-r--r-- 0 root (0) root (0) 22085 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00122_source.html\n+-rw-r--r-- 0 root (0) root (0) 5459 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125.html\n+-rw-r--r-- 0 root (0) root (0) 22111 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00125_source.html\n+-rw-r--r-- 0 root (0) root (0) 5455 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128.html\n+-rw-r--r-- 0 root (0) root (0) 22139 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00128_source.html\n+-rw-r--r-- 0 root (0) root (0) 5217 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131.html\n+-rw-r--r-- 0 root (0) root (0) 21160 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00131_source.html\n+-rw-r--r-- 0 root (0) root (0) 5142 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134.html\n+-rw-r--r-- 0 root (0) root (0) 12553 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00134_source.html\n+-rw-r--r-- 0 root (0) root (0) 5296 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137.html\n+-rw-r--r-- 0 root (0) root (0) 36399 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00137_source.html\n+-rw-r--r-- 0 root (0) root (0) 5149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140.html\n+-rw-r--r-- 0 root (0) root (0) 13614 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00140_source.html\n+-rw-r--r-- 0 root (0) root (0) 5211 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143.html\n+-rw-r--r-- 0 root (0) root (0) 23936 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00143_source.html\n+-rw-r--r-- 0 root (0) root (0) 5295 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146.html\n+-rw-r--r-- 0 root (0) root (0) 48547 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00146_source.html\n+-rw-r--r-- 0 root (0) root (0) 5137 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149.html\n+-rw-r--r-- 0 root (0) root (0) 12770 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00149_source.html\n+-rw-r--r-- 0 root (0) root (0) 5293 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152.html\n+-rw-r--r-- 0 root (0) root (0) 49681 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00152_source.html\n+-rw-r--r-- 0 root (0) root (0) 5085 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155.html\n+-rw-r--r-- 0 root (0) root (0) 19690 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155_source.html\n+-rw-r--r-- 0 root (0) root (0) 6373 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158.html\n+-rw-r--r-- 0 root (0) root (0) 19545 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00158_source.html\n+-rw-r--r-- 0 root (0) root (0) 5707 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161.html\n+-rw-r--r-- 0 root (0) root (0) 15528 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00161_source.html\n+-rw-r--r-- 0 root (0) root (0) 5224 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164.html\n+-rw-r--r-- 0 root (0) root (0) 20220 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00164_source.html\n+-rw-r--r-- 0 root (0) root (0) 5149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167.html\n+-rw-r--r-- 0 root (0) root (0) 12594 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00167_source.html\n+-rw-r--r-- 0 root (0) root (0) 5303 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170.html\n+-rw-r--r-- 0 root (0) root (0) 33235 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00170_source.html\n+-rw-r--r-- 0 root (0) root (0) 6113 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173.html\n+-rw-r--r-- 0 root (0) root (0) 24674 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00173_source.html\n+-rw-r--r-- 0 root (0) root (0) 5053 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176.html\n+-rw-r--r-- 0 root (0) root (0) 10752 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00176_source.html\n+-rw-r--r-- 0 root (0) root (0) 6025 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179.html\n+-rw-r--r-- 0 root (0) root (0) 37712 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00179_source.html\n+-rw-r--r-- 0 root (0) root (0) 5592 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182.html\n+-rw-r--r-- 0 root (0) root (0) 57998 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00182_source.html\n+-rw-r--r-- 0 root (0) root (0) 6316 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185.html\n+-rw-r--r-- 0 root (0) root (0) 96772 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00185_source.html\n+-rw-r--r-- 0 root (0) root (0) 5536 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188.html\n+-rw-r--r-- 0 root (0) root (0) 30828 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00188_source.html\n+-rw-r--r-- 0 root (0) root (0) 8589 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191.html\n+-rw-r--r-- 0 root (0) root (0) 189048 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00191_source.html\n+-rw-r--r-- 0 root (0) root (0) 21998 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194.html\n+-rw-r--r-- 0 root (0) root (0) 60168 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00194_source.html\n+-rw-r--r-- 0 root (0) root (0) 21598 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197.html\n+-rw-r--r-- 0 root (0) root (0) 274916 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00197_source.html\n+-rw-r--r-- 0 root (0) root (0) 5667 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html\n+-rw-r--r-- 0 root (0) root (0) 39248 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html\n+-rw-r--r-- 0 root (0) root (0) 5444 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203.html\n+-rw-r--r-- 0 root (0) root (0) 20136 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00203_source.html\n+-rw-r--r-- 0 root (0) root (0) 6075 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206.html\n+-rw-r--r-- 0 root (0) root (0) 53867 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00206_source.html\n+-rw-r--r-- 0 root (0) root (0) 5880 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209.html\n+-rw-r--r-- 0 root (0) root (0) 17597 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00209_source.html\n+-rw-r--r-- 0 root (0) root (0) 5605 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212.html\n+-rw-r--r-- 0 root (0) root (0) 40262 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00212_source.html\n+-rw-r--r-- 0 root (0) root (0) 6434 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215.html\n+-rw-r--r-- 0 root (0) root (0) 53845 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00215_source.html\n+-rw-r--r-- 0 root (0) root (0) 12212 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218.html\n+-rw-r--r-- 0 root (0) root (0) 101142 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00218_source.html\n+-rw-r--r-- 0 root (0) root (0) 6461 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221.html\n+-rw-r--r-- 0 root (0) root (0) 55095 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00221_source.html\n+-rw-r--r-- 0 root (0) root (0) 3691 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224.html\n+-rw-r--r-- 0 root (0) root (0) 5776 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00224_source.html\n+-rw-r--r-- 0 root (0) root (0) 4173 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227.html\n+-rw-r--r-- 0 root (0) root (0) 5446 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00227_source.html\n+-rw-r--r-- 0 root (0) root (0) 5773 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230.html\n+-rw-r--r-- 0 root (0) root (0) 29864 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00230_source.html\n+-rw-r--r-- 0 root (0) root (0) 5615 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233.html\n+-rw-r--r-- 0 root (0) root (0) 67254 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00233_source.html\n+-rw-r--r-- 0 root (0) root (0) 6990 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236.html\n+-rw-r--r-- 0 root (0) root (0) 151840 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00236_source.html\n+-rw-r--r-- 0 root (0) root (0) 5147 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239.html\n+-rw-r--r-- 0 root (0) root (0) 12107 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00239_source.html\n+-rw-r--r-- 0 root (0) root (0) 5593 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242.html\n+-rw-r--r-- 0 root (0) root (0) 63478 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00242_source.html\n+-rw-r--r-- 0 root (0) root (0) 5637 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245.html\n+-rw-r--r-- 0 root (0) root (0) 76509 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00245_source.html\n+-rw-r--r-- 0 root (0) root (0) 5232 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248.html\n+-rw-r--r-- 0 root (0) root (0) 23868 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00248_source.html\n+-rw-r--r-- 0 root (0) root (0) 6548 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251.html\n+-rw-r--r-- 0 root (0) root (0) 44400 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00251_source.html\n+-rw-r--r-- 0 root (0) root (0) 5214 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254.html\n+-rw-r--r-- 0 root (0) root (0) 10366 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00254_source.html\n+-rw-r--r-- 0 root (0) root (0) 5118 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257.html\n+-rw-r--r-- 0 root (0) root (0) 12251 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00257_source.html\n+-rw-r--r-- 0 root (0) root (0) 5016 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260.html\n+-rw-r--r-- 0 root (0) root (0) 14897 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00260_source.html\n+-rw-r--r-- 0 root (0) root (0) 5126 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263.html\n+-rw-r--r-- 0 root (0) root (0) 23995 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00263_source.html\n+-rw-r--r-- 0 root (0) root (0) 5768 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266.html\n+-rw-r--r-- 0 root (0) root (0) 19910 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00266_source.html\n+-rw-r--r-- 0 root (0) root (0) 5198 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269.html\n+-rw-r--r-- 0 root (0) root (0) 21031 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00269_source.html\n+-rw-r--r-- 0 root (0) root (0) 5176 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272.html\n+-rw-r--r-- 0 root (0) root (0) 90391 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00272_source.html\n+-rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275.html\n+-rw-r--r-- 0 root (0) root (0) 13456 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00275_source.html\n+-rw-r--r-- 0 root (0) root (0) 5182 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278.html\n+-rw-r--r-- 0 root (0) root (0) 24609 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00278_source.html\n+-rw-r--r-- 0 root (0) root (0) 9091 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281.html\n+-rw-r--r-- 0 root (0) root (0) 35935 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00281_source.html\n+-rw-r--r-- 0 root (0) root (0) 5185 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284.html\n+-rw-r--r-- 0 root (0) root (0) 19289 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00284_source.html\n+-rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287.html\n+-rw-r--r-- 0 root (0) root (0) 13244 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00287_source.html\n+-rw-r--r-- 0 root (0) root (0) 5179 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290.html\n+-rw-r--r-- 0 root (0) root (0) 31463 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00290_source.html\n+-rw-r--r-- 0 root (0) root (0) 5167 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293.html\n+-rw-r--r-- 0 root (0) root (0) 24423 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00293_source.html\n+-rw-r--r-- 0 root (0) root (0) 5104 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296.html\n+-rw-r--r-- 0 root (0) root (0) 15517 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00296_source.html\n+-rw-r--r-- 0 root (0) root (0) 5098 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299.html\n+-rw-r--r-- 0 root (0) root (0) 12272 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00299_source.html\n+-rw-r--r-- 0 root (0) root (0) 5117 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302.html\n+-rw-r--r-- 0 root (0) root (0) 15589 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00302_source.html\n+-rw-r--r-- 0 root (0) root (0) 5108 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305.html\n+-rw-r--r-- 0 root (0) root (0) 12310 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00305_source.html\n+-rw-r--r-- 0 root (0) root (0) 5177 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308.html\n+-rw-r--r-- 0 root (0) root (0) 24628 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00308_source.html\n+-rw-r--r-- 0 root (0) root (0) 5397 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311.html\n+-rw-r--r-- 0 root (0) root (0) 21982 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00311_source.html\n+-rw-r--r-- 0 root (0) root (0) 5400 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314.html\n+-rw-r--r-- 0 root (0) root (0) 21863 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00314_source.html\n+-rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317.html\n+-rw-r--r-- 0 root (0) root (0) 13542 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00317_source.html\n+-rw-r--r-- 0 root (0) root (0) 5223 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320.html\n+-rw-r--r-- 0 root (0) root (0) 112001 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00320_source.html\n+-rw-r--r-- 0 root (0) root (0) 5181 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323.html\n+-rw-r--r-- 0 root (0) root (0) 26806 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00323_source.html\n+-rw-r--r-- 0 root (0) root (0) 6450 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326.html\n+-rw-r--r-- 0 root (0) root (0) 40561 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00326_source.html\n+-rw-r--r-- 0 root (0) root (0) 5462 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329.html\n+-rw-r--r-- 0 root (0) root (0) 21550 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00329_source.html\n+-rw-r--r-- 0 root (0) root (0) 5186 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332.html\n+-rw-r--r-- 0 root (0) root (0) 25485 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00332_source.html\n+-rw-r--r-- 0 root (0) root (0) 5223 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335.html\n+-rw-r--r-- 0 root (0) root (0) 92562 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00335_source.html\n -rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338.html\n--rw-r--r-- 0 root (0) root (0) 13456 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338_source.html\n--rw-r--r-- 0 root (0) root (0) 5182 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341.html\n--rw-r--r-- 0 root (0) root (0) 24609 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341_source.html\n--rw-r--r-- 0 root (0) root (0) 5176 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344.html\n--rw-r--r-- 0 root (0) root (0) 90391 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344_source.html\n--rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347.html\n--rw-r--r-- 0 root (0) root (0) 13542 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347_source.html\n--rw-r--r-- 0 root (0) root (0) 5223 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350.html\n--rw-r--r-- 0 root (0) root (0) 112001 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350_source.html\n--rw-r--r-- 0 root (0) root (0) 5181 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353.html\n--rw-r--r-- 0 root (0) root (0) 26806 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353_source.html\n--rw-r--r-- 0 root (0) root (0) 5108 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356.html\n--rw-r--r-- 0 root (0) root (0) 12310 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356_source.html\n--rw-r--r-- 0 root (0) root (0) 5177 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359.html\n--rw-r--r-- 0 root (0) root (0) 24628 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359_source.html\n--rw-r--r-- 0 root (0) root (0) 5117 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362.html\n--rw-r--r-- 0 root (0) root (0) 15589 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362_source.html\n+-rw-r--r-- 0 root (0) root (0) 13457 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00338_source.html\n+-rw-r--r-- 0 root (0) root (0) 5380 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341.html\n+-rw-r--r-- 0 root (0) root (0) 21828 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00341_source.html\n+-rw-r--r-- 0 root (0) root (0) 5388 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344.html\n+-rw-r--r-- 0 root (0) root (0) 21872 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00344_source.html\n+-rw-r--r-- 0 root (0) root (0) 5102 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347.html\n+-rw-r--r-- 0 root (0) root (0) 13010 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00347_source.html\n+-rw-r--r-- 0 root (0) root (0) 5169 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350.html\n+-rw-r--r-- 0 root (0) root (0) 19436 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350_source.html\n+-rw-r--r-- 0 root (0) root (0) 5158 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353.html\n+-rw-r--r-- 0 root (0) root (0) 34490 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00353_source.html\n+-rw-r--r-- 0 root (0) root (0) 7053 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356.html\n+-rw-r--r-- 0 root (0) root (0) 102149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00356_source.html\n+-rw-r--r-- 0 root (0) root (0) 5624 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359.html\n+-rw-r--r-- 0 root (0) root (0) 53711 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00359_source.html\n+-rw-r--r-- 0 root (0) root (0) 5189 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362.html\n+-rw-r--r-- 0 root (0) root (0) 11956 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00362_source.html\n -rw-r--r-- 0 root (0) root (0) 5389 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365.html\n--rw-r--r-- 0 root (0) root (0) 21884 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365_source.html\n--rw-r--r-- 0 root (0) root (0) 9091 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368.html\n--rw-r--r-- 0 root (0) root (0) 35935 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368_source.html\n--rw-r--r-- 0 root (0) root (0) 5389 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371.html\n--rw-r--r-- 0 root (0) root (0) 21879 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371_source.html\n--rw-r--r-- 0 root (0) root (0) 5380 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374.html\n--rw-r--r-- 0 root (0) root (0) 21828 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374_source.html\n--rw-r--r-- 0 root (0) root (0) 6450 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377.html\n--rw-r--r-- 0 root (0) root (0) 40561 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377_source.html\n--rw-r--r-- 0 root (0) root (0) 5624 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380.html\n--rw-r--r-- 0 root (0) root (0) 53711 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380_source.html\n--rw-r--r-- 0 root (0) root (0) 5189 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383.html\n--rw-r--r-- 0 root (0) root (0) 11956 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383_source.html\n--rw-r--r-- 0 root (0) root (0) 7053 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386.html\n--rw-r--r-- 0 root (0) root (0) 102149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386_source.html\n--rw-r--r-- 0 root (0) root (0) 5185 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389.html\n--rw-r--r-- 0 root (0) root (0) 19289 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389_source.html\n--rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392.html\n--rw-r--r-- 0 root (0) root (0) 13244 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392_source.html\n--rw-r--r-- 0 root (0) root (0) 5179 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395.html\n--rw-r--r-- 0 root (0) root (0) 31463 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395_source.html\n--rw-r--r-- 0 root (0) root (0) 5356 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398.html\n--rw-r--r-- 0 root (0) root (0) 21678 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398_source.html\n--rw-r--r-- 0 root (0) root (0) 5118 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401.html\n--rw-r--r-- 0 root (0) root (0) 12251 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401_source.html\n--rw-r--r-- 0 root (0) root (0) 5126 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404.html\n--rw-r--r-- 0 root (0) root (0) 23995 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404_source.html\n--rw-r--r-- 0 root (0) root (0) 5016 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407.html\n--rw-r--r-- 0 root (0) root (0) 14897 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407_source.html\n--rw-r--r-- 0 root (0) root (0) 5198 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410.html\n--rw-r--r-- 0 root (0) root (0) 21031 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410_source.html\n--rw-r--r-- 0 root (0) root (0) 5388 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413.html\n--rw-r--r-- 0 root (0) root (0) 21872 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413_source.html\n--rw-r--r-- 0 root (0) root (0) 5389 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416.html\n--rw-r--r-- 0 root (0) root (0) 21879 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416_source.html\n--rw-r--r-- 0 root (0) root (0) 5397 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419.html\n--rw-r--r-- 0 root (0) root (0) 21982 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419_source.html\n--rw-r--r-- 0 root (0) root (0) 5768 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422.html\n--rw-r--r-- 0 root (0) root (0) 19910 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422_source.html\n--rw-r--r-- 0 root (0) root (0) 5462 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425.html\n--rw-r--r-- 0 root (0) root (0) 21550 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425_source.html\n--rw-r--r-- 0 root (0) root (0) 5169 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428.html\n--rw-r--r-- 0 root (0) root (0) 19436 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428_source.html\n--rw-r--r-- 0 root (0) root (0) 5102 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431.html\n--rw-r--r-- 0 root (0) root (0) 13010 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431_source.html\n--rw-r--r-- 0 root (0) root (0) 5158 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434.html\n--rw-r--r-- 0 root (0) root (0) 34490 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434_source.html\n--rw-r--r-- 0 root (0) root (0) 5193 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437.html\n--rw-r--r-- 0 root (0) root (0) 21017 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437_source.html\n--rw-r--r-- 0 root (0) root (0) 6444 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440.html\n--rw-r--r-- 0 root (0) root (0) 45785 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440_source.html\n--rw-r--r-- 0 root (0) root (0) 5462 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443.html\n--rw-r--r-- 0 root (0) root (0) 12098 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443_source.html\n--rw-r--r-- 0 root (0) root (0) 3744 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446.html\n--rw-r--r-- 0 root (0) root (0) 6044 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446_source.html\n--rw-r--r-- 0 root (0) root (0) 3691 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449.html\n--rw-r--r-- 0 root (0) root (0) 5776 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449_source.html\n--rw-r--r-- 0 root (0) root (0) 6301 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452.html\n--rw-r--r-- 0 root (0) root (0) 27028 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452_source.html\n--rw-r--r-- 0 root (0) root (0) 4036 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455.html\n--rw-r--r-- 0 root (0) root (0) 5073 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455_source.html\n--rw-r--r-- 0 root (0) root (0) 6401 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458.html\n--rw-r--r-- 0 root (0) root (0) 15842 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458_source.html\n--rw-r--r-- 0 root (0) root (0) 5592 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461.html\n--rw-r--r-- 0 root (0) root (0) 57998 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461_source.html\n--rw-r--r-- 0 root (0) root (0) 5605 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464.html\n--rw-r--r-- 0 root (0) root (0) 40262 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464_source.html\n--rw-r--r-- 0 root (0) root (0) 21598 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467.html\n--rw-r--r-- 0 root (0) root (0) 274916 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467_source.html\n--rw-r--r-- 0 root (0) root (0) 12212 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470.html\n--rw-r--r-- 0 root (0) root (0) 101142 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470_source.html\n--rw-r--r-- 0 root (0) root (0) 5536 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473.html\n--rw-r--r-- 0 root (0) root (0) 30828 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473_source.html\n--rw-r--r-- 0 root (0) root (0) 6434 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476.html\n--rw-r--r-- 0 root (0) root (0) 53845 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476_source.html\n--rw-r--r-- 0 root (0) root (0) 6316 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479.html\n--rw-r--r-- 0 root (0) root (0) 96772 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479_source.html\n--rw-r--r-- 0 root (0) root (0) 5667 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html\n--rw-r--r-- 0 root (0) root (0) 39248 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482_source.html\n--rw-r--r-- 0 root (0) root (0) 5444 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485.html\n--rw-r--r-- 0 root (0) root (0) 20136 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485_source.html\n--rw-r--r-- 0 root (0) root (0) 21998 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488.html\n--rw-r--r-- 0 root (0) root (0) 60168 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488_source.html\n--rw-r--r-- 0 root (0) root (0) 6075 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491.html\n--rw-r--r-- 0 root (0) root (0) 53867 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491_source.html\n--rw-r--r-- 0 root (0) root (0) 5880 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494.html\n--rw-r--r-- 0 root (0) root (0) 17597 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494_source.html\n--rw-r--r-- 0 root (0) root (0) 8589 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497.html\n--rw-r--r-- 0 root (0) root (0) 189048 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497_source.html\n--rw-r--r-- 0 root (0) root (0) 6461 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500.html\n--rw-r--r-- 0 root (0) root (0) 55095 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500_source.html\n--rw-r--r-- 0 root (0) root (0) 5293 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503.html\n--rw-r--r-- 0 root (0) root (0) 49681 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00503_source.html\n--rw-r--r-- 0 root (0) root (0) 5137 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506.html\n--rw-r--r-- 0 root (0) root (0) 12770 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00506_source.html\n--rw-r--r-- 0 root (0) root (0) 5085 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509.html\n--rw-r--r-- 0 root (0) root (0) 19690 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509_source.html\n--rw-r--r-- 0 root (0) root (0) 5707 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512.html\n--rw-r--r-- 0 root (0) root (0) 15528 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512_source.html\n--rw-r--r-- 0 root (0) root (0) 5303 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515.html\n--rw-r--r-- 0 root (0) root (0) 33235 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515_source.html\n--rw-r--r-- 0 root (0) root (0) 5224 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518.html\n--rw-r--r-- 0 root (0) root (0) 20220 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518_source.html\n--rw-r--r-- 0 root (0) root (0) 5149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521.html\n--rw-r--r-- 0 root (0) root (0) 12594 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521_source.html\n--rw-r--r-- 0 root (0) root (0) 5460 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524.html\n--rw-r--r-- 0 root (0) root (0) 22085 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524_source.html\n--rw-r--r-- 0 root (0) root (0) 5481 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527.html\n--rw-r--r-- 0 root (0) root (0) 22348 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527_source.html\n--rw-r--r-- 0 root (0) root (0) 5295 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530.html\n--rw-r--r-- 0 root (0) root (0) 48547 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530_source.html\n--rw-r--r-- 0 root (0) root (0) 5211 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533.html\n--rw-r--r-- 0 root (0) root (0) 23936 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533_source.html\n--rw-r--r-- 0 root (0) root (0) 5149 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536.html\n--rw-r--r-- 0 root (0) root (0) 13614 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536_source.html\n--rw-r--r-- 0 root (0) root (0) 5296 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539.html\n--rw-r--r-- 0 root (0) root (0) 36399 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539_source.html\n--rw-r--r-- 0 root (0) root (0) 5142 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542.html\n--rw-r--r-- 0 root (0) root (0) 12553 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542_source.html\n--rw-r--r-- 0 root (0) root (0) 5217 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545.html\n--rw-r--r-- 0 root (0) root (0) 21160 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545_source.html\n--rw-r--r-- 0 root (0) root (0) 5482 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548.html\n--rw-r--r-- 0 root (0) root (0) 22236 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548_source.html\n--rw-r--r-- 0 root (0) root (0) 5455 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00551.html\n--rw-r--r-- 0 root (0) root (0) 22139 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00551_source.html\n--rw-r--r-- 0 root (0) root (0) 5142 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554.html\n--rw-r--r-- 0 root (0) root (0) 13126 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554_source.html\n--rw-r--r-- 0 root (0) root (0) 5204 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00557.html\n--rw-r--r-- 0 root (0) root (0) 23377 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00557_source.html\n--rw-r--r-- 0 root (0) root (0) 5283 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00560.html\n--rw-r--r-- 0 root (0) root (0) 48607 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00560_source.html\n--rw-r--r-- 0 root (0) root (0) 6373 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00563.html\n--rw-r--r-- 0 root (0) root (0) 19545 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00563_source.html\n--rw-r--r-- 0 root (0) root (0) 5459 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00566.html\n--rw-r--r-- 0 root (0) root (0) 22111 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00566_source.html\n+-rw-r--r-- 0 root (0) root (0) 21879 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00365_source.html\n+-rw-r--r-- 0 root (0) root (0) 5193 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368.html\n+-rw-r--r-- 0 root (0) root (0) 21017 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00368_source.html\n+-rw-r--r-- 0 root (0) root (0) 6444 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371.html\n+-rw-r--r-- 0 root (0) root (0) 45785 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00371_source.html\n+-rw-r--r-- 0 root (0) root (0) 5129 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374.html\n+-rw-r--r-- 0 root (0) root (0) 25087 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00374_source.html\n+-rw-r--r-- 0 root (0) root (0) 5016 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377.html\n+-rw-r--r-- 0 root (0) root (0) 15467 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00377_source.html\n+-rw-r--r-- 0 root (0) root (0) 5118 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380.html\n+-rw-r--r-- 0 root (0) root (0) 12353 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00380_source.html\n+-rw-r--r-- 0 root (0) root (0) 5462 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383.html\n+-rw-r--r-- 0 root (0) root (0) 12098 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00383_source.html\n+-rw-r--r-- 0 root (0) root (0) 5110 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386.html\n+-rw-r--r-- 0 root (0) root (0) 13188 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00386_source.html\n+-rw-r--r-- 0 root (0) root (0) 5181 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389.html\n+-rw-r--r-- 0 root (0) root (0) 21322 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00389_source.html\n+-rw-r--r-- 0 root (0) root (0) 5180 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392.html\n+-rw-r--r-- 0 root (0) root (0) 51963 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00392_source.html\n+-rw-r--r-- 0 root (0) root (0) 5461 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395.html\n+-rw-r--r-- 0 root (0) root (0) 21521 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00395_source.html\n+-rw-r--r-- 0 root (0) root (0) 5389 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398.html\n+-rw-r--r-- 0 root (0) root (0) 21879 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00398_source.html\n+-rw-r--r-- 0 root (0) root (0) 5389 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401.html\n+-rw-r--r-- 0 root (0) root (0) 21884 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00401_source.html\n+-rw-r--r-- 0 root (0) root (0) 5356 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404.html\n+-rw-r--r-- 0 root (0) root (0) 21678 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00404_source.html\n+-rw-r--r-- 0 root (0) root (0) 5062 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407.html\n+-rw-r--r-- 0 root (0) root (0) 7775 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00407_source.html\n+-rw-r--r-- 0 root (0) root (0) 5630 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410.html\n+-rw-r--r-- 0 root (0) root (0) 102194 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00410_source.html\n+-rw-r--r-- 0 root (0) root (0) 7791 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413.html\n+-rw-r--r-- 0 root (0) root (0) 50578 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00413_source.html\n+-rw-r--r-- 0 root (0) root (0) 5628 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416.html\n+-rw-r--r-- 0 root (0) root (0) 119945 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00416_source.html\n+-rw-r--r-- 0 root (0) root (0) 5061 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419.html\n+-rw-r--r-- 0 root (0) root (0) 9362 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00419_source.html\n+-rw-r--r-- 0 root (0) root (0) 5366 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422.html\n+-rw-r--r-- 0 root (0) root (0) 13307 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00422_source.html\n+-rw-r--r-- 0 root (0) root (0) 4996 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425.html\n+-rw-r--r-- 0 root (0) root (0) 24190 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00425_source.html\n+-rw-r--r-- 0 root (0) root (0) 5221 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428.html\n+-rw-r--r-- 0 root (0) root (0) 7727 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00428_source.html\n+-rw-r--r-- 0 root (0) root (0) 5265 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431.html\n+-rw-r--r-- 0 root (0) root (0) 7773 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00431_source.html\n+-rw-r--r-- 0 root (0) root (0) 6239 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434.html\n+-rw-r--r-- 0 root (0) root (0) 23788 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00434_source.html\n+-rw-r--r-- 0 root (0) root (0) 7043 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437.html\n+-rw-r--r-- 0 root (0) root (0) 27987 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00437_source.html\n+-rw-r--r-- 0 root (0) root (0) 5266 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440.html\n+-rw-r--r-- 0 root (0) root (0) 7725 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00440_source.html\n+-rw-r--r-- 0 root (0) root (0) 5226 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443.html\n+-rw-r--r-- 0 root (0) root (0) 7674 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00443_source.html\n+-rw-r--r-- 0 root (0) root (0) 5033 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446.html\n+-rw-r--r-- 0 root (0) root (0) 19041 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00446_source.html\n+-rw-r--r-- 0 root (0) root (0) 4910 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449.html\n+-rw-r--r-- 0 root (0) root (0) 11955 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00449_source.html\n+-rw-r--r-- 0 root (0) root (0) 5067 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452.html\n+-rw-r--r-- 0 root (0) root (0) 11639 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00452_source.html\n+-rw-r--r-- 0 root (0) root (0) 6230 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455.html\n+-rw-r--r-- 0 root (0) root (0) 13798 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00455_source.html\n+-rw-r--r-- 0 root (0) root (0) 5063 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458.html\n+-rw-r--r-- 0 root (0) root (0) 33501 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00458_source.html\n+-rw-r--r-- 0 root (0) root (0) 4985 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461.html\n+-rw-r--r-- 0 root (0) root (0) 14588 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00461_source.html\n+-rw-r--r-- 0 root (0) root (0) 5243 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464.html\n+-rw-r--r-- 0 root (0) root (0) 7684 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00464_source.html\n+-rw-r--r-- 0 root (0) root (0) 5257 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467.html\n+-rw-r--r-- 0 root (0) root (0) 7700 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00467_source.html\n+-rw-r--r-- 0 root (0) root (0) 5642 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470.html\n+-rw-r--r-- 0 root (0) root (0) 110872 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00470_source.html\n+-rw-r--r-- 0 root (0) root (0) 5715 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473.html\n+-rw-r--r-- 0 root (0) root (0) 132591 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00473_source.html\n+-rw-r--r-- 0 root (0) root (0) 7362 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476.html\n+-rw-r--r-- 0 root (0) root (0) 42738 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00476_source.html\n+-rw-r--r-- 0 root (0) root (0) 7251 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479.html\n+-rw-r--r-- 0 root (0) root (0) 27987 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479_source.html\n+-rw-r--r-- 0 root (0) root (0) 5256 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html\n+-rw-r--r-- 0 root (0) root (0) 7790 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482_source.html\n+-rw-r--r-- 0 root (0) root (0) 5054 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485.html\n+-rw-r--r-- 0 root (0) root (0) 7741 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00485_source.html\n+-rw-r--r-- 0 root (0) root (0) 5259 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488.html\n+-rw-r--r-- 0 root (0) root (0) 20359 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00488_source.html\n+-rw-r--r-- 0 root (0) root (0) 5247 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491.html\n+-rw-r--r-- 0 root (0) root (0) 7695 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00491_source.html\n+-rw-r--r-- 0 root (0) root (0) 6401 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494.html\n+-rw-r--r-- 0 root (0) root (0) 15842 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00494_source.html\n+-rw-r--r-- 0 root (0) root (0) 5188 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497.html\n+-rw-r--r-- 0 root (0) root (0) 12770 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00497_source.html\n+-rw-r--r-- 0 root (0) root (0) 5288 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500.html\n+-rw-r--r-- 0 root (0) root (0) 18359 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00500_source.html\n+-rw-r--r-- 0 root (0) root (0) 5421 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509.html\n+-rw-r--r-- 0 root (0) root (0) 18599 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00509_source.html\n+-rw-r--r-- 0 root (0) root (0) 5195 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512.html\n+-rw-r--r-- 0 root (0) root (0) 20872 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00512_source.html\n+-rw-r--r-- 0 root (0) root (0) 7961 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515.html\n+-rw-r--r-- 0 root (0) root (0) 80165 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00515_source.html\n+-rw-r--r-- 0 root (0) root (0) 5015 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518.html\n+-rw-r--r-- 0 root (0) root (0) 21493 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00518_source.html\n+-rw-r--r-- 0 root (0) root (0) 5181 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521.html\n+-rw-r--r-- 0 root (0) root (0) 21612 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00521_source.html\n+-rw-r--r-- 0 root (0) root (0) 5273 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524.html\n+-rw-r--r-- 0 root (0) root (0) 41303 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00524_source.html\n+-rw-r--r-- 0 root (0) root (0) 4911 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527.html\n+-rw-r--r-- 0 root (0) root (0) 15970 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00527_source.html\n+-rw-r--r-- 0 root (0) root (0) 4912 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530.html\n+-rw-r--r-- 0 root (0) root (0) 19133 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00530_source.html\n+-rw-r--r-- 0 root (0) root (0) 6689 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533.html\n+-rw-r--r-- 0 root (0) root (0) 60063 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00533_source.html\n+-rw-r--r-- 0 root (0) root (0) 7817 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536.html\n+-rw-r--r-- 0 root (0) root (0) 43351 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00536_source.html\n+-rw-r--r-- 0 root (0) root (0) 7727 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539.html\n+-rw-r--r-- 0 root (0) root (0) 53428 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00539_source.html\n+-rw-r--r-- 0 root (0) root (0) 4833 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542.html\n+-rw-r--r-- 0 root (0) root (0) 20084 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00542_source.html\n+-rw-r--r-- 0 root (0) root (0) 8318 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545.html\n+-rw-r--r-- 0 root (0) root (0) 60254 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00545_source.html\n+-rw-r--r-- 0 root (0) root (0) 5635 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548.html\n+-rw-r--r-- 0 root (0) root (0) 40032 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00548_source.html\n+-rw-r--r-- 0 root (0) root (0) 5511 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00551.html\n+-rw-r--r-- 0 root (0) root (0) 22820 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00551_source.html\n+-rw-r--r-- 0 root (0) root (0) 5559 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554.html\n+-rw-r--r-- 0 root (0) root (0) 61782 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554_source.html\n+-rw-r--r-- 0 root (0) root (0) 4720 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00557.html\n+-rw-r--r-- 0 root (0) root (0) 8887 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00557_source.html\n+-rw-r--r-- 0 root (0) root (0) 7329 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00560.html\n+-rw-r--r-- 0 root (0) root (0) 76679 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00560_source.html\n+-rw-r--r-- 0 root (0) root (0) 3744 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00563.html\n+-rw-r--r-- 0 root (0) root (0) 6044 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00563_source.html\n+-rw-r--r-- 0 root (0) root (0) 4742 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00566.html\n+-rw-r--r-- 0 root (0) root (0) 19584 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00566_source.html\n -rw-r--r-- 0 root (0) root (0) 22404 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00569.html\n -rw-r--r-- 0 root (0) root (0) 9062 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00570.html\n -rw-r--r-- 0 root (0) root (0) 7360 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00571.html\n -rw-r--r-- 0 root (0) root (0) 35668 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00571.png\n -rw-r--r-- 0 root (0) root (0) 4382 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00572.html\n -rw-r--r-- 0 root (0) root (0) 5396 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00572.png\n -rw-r--r-- 0 root (0) root (0) 6390 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a00573.html\n@@ -1264,30 +1264,30 @@\n -rw-r--r-- 0 root (0) root (0) 62202 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04461_source.html\n -rw-r--r-- 0 root (0) root (0) 4800 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04464.html\n -rw-r--r-- 0 root (0) root (0) 12225 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04464_source.html\n -rw-r--r-- 0 root (0) root (0) 5569 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04467.html\n -rw-r--r-- 0 root (0) root (0) 39808 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04467_source.html\n -rw-r--r-- 0 root (0) root (0) 4166 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04470.html\n -rw-r--r-- 0 root (0) root (0) 13911 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04470_source.html\n--rw-r--r-- 0 root (0) root (0) 5298 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04473.html\n--rw-r--r-- 0 root (0) root (0) 20105 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04473_source.html\n--rw-r--r-- 0 root (0) root (0) 5547 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04476.html\n--rw-r--r-- 0 root (0) root (0) 23259 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04476_source.html\n--rw-r--r-- 0 root (0) root (0) 5919 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04479.html\n--rw-r--r-- 0 root (0) root (0) 41305 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04479_source.html\n--rw-r--r-- 0 root (0) root (0) 5058 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04482.html\n--rw-r--r-- 0 root (0) root (0) 13851 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04482_source.html\n--rw-r--r-- 0 root (0) root (0) 5184 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04485.html\n--rw-r--r-- 0 root (0) root (0) 13538 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04485_source.html\n--rw-r--r-- 0 root (0) root (0) 5345 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04488.html\n--rw-r--r-- 0 root (0) root (0) 36449 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04488_source.html\n--rw-r--r-- 0 root (0) root (0) 5194 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04491.html\n--rw-r--r-- 0 root (0) root (0) 17793 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04491_source.html\n--rw-r--r-- 0 root (0) root (0) 5212 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04494.html\n--rw-r--r-- 0 root (0) root (0) 18721 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04494_source.html\n+-rw-r--r-- 0 root (0) root (0) 5547 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04473.html\n+-rw-r--r-- 0 root (0) root (0) 23259 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04473_source.html\n+-rw-r--r-- 0 root (0) root (0) 5919 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04476.html\n+-rw-r--r-- 0 root (0) root (0) 41305 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04476_source.html\n+-rw-r--r-- 0 root (0) root (0) 5058 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04479.html\n+-rw-r--r-- 0 root (0) root (0) 13851 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04479_source.html\n+-rw-r--r-- 0 root (0) root (0) 5184 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04482.html\n+-rw-r--r-- 0 root (0) root (0) 13538 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04482_source.html\n+-rw-r--r-- 0 root (0) root (0) 5345 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04485.html\n+-rw-r--r-- 0 root (0) root (0) 36449 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04485_source.html\n+-rw-r--r-- 0 root (0) root (0) 5194 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04488.html\n+-rw-r--r-- 0 root (0) root (0) 17793 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04488_source.html\n+-rw-r--r-- 0 root (0) root (0) 5212 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04491.html\n+-rw-r--r-- 0 root (0) root (0) 18721 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04491_source.html\n+-rw-r--r-- 0 root (0) root (0) 5298 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04494.html\n+-rw-r--r-- 0 root (0) root (0) 20105 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04494_source.html\n -rw-r--r-- 0 root (0) root (0) 7069 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04497.html\n -rw-r--r-- 0 root (0) root (0) 43909 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04497_source.html\n -rw-r--r-- 0 root (0) root (0) 5618 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04500.html\n -rw-r--r-- 0 root (0) root (0) 18653 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/a04500_source.html\n -rw-r--r-- 0 root (0) root (0) 125994 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/annotated.html\n -rw-r--r-- 0 root (0) root (0) 676 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/bc_s.png\n -rw-r--r-- 0 root (0) root (0) 635 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/bc_sd.png\n@@ -1508,15 +1508,15 @@\n -rw-r--r-- 0 root (0) root (0) 5720 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_efe9c42b7995a789e2e3a3951e68c4dc.html\n -rw-r--r-- 0 root (0) root (0) 4721 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_efe9c42b7995a789e2e3a3951e68c4dc_dep.png\n -rw-r--r-- 0 root (0) root (0) 5172 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_f2cea2550179f5ef9eb9f9aa69c380e8.html\n -rw-r--r-- 0 root (0) root (0) 4082 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_f2cea2550179f5ef9eb9f9aa69c380e8_dep.png\n -rw-r--r-- 0 root (0) root (0) 5592 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_fae6c31a68fd74edf8214423c164f0b4.html\n -rw-r--r-- 0 root (0) root (0) 4300 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_fae6c31a68fd74edf8214423c164f0b4_dep.png\n -rw-r--r-- 0 root (0) root (0) 45631 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/doxygen.css\n--rw-r--r-- 0 root (0) root (0) 88205 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dune-localfunctions.tag.gz\n+-rw-r--r-- 0 root (0) root (0) 88241 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dune-localfunctions.tag.gz\n -rw-r--r-- 0 root (0) root (0) 7704 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/dynsections.js\n -rw-r--r-- 0 root (0) root (0) 87492 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/files.html\n -rw-r--r-- 0 root (0) root (0) 3948 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/form_0.png\n -rw-r--r-- 0 root (0) root (0) 4031 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/form_0_dark.png\n -rw-r--r-- 0 root (0) root (0) 1331 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/form_1.png\n -rw-r--r-- 0 root (0) root (0) 560 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/form_10.png\n -rw-r--r-- 0 root (0) root (0) 626 2023-01-12 22:15:36.000000 ./usr/share/doc/libdune-localfunctions-doc/doxygen/form_10_dark.png\n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00011.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localbasis.hh File Reference\n+dune-localfunctions: nedelec.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,25 @@\n \n \n \n \n \n
\n \n+
  • dune
  • localfunctions
  • \n
    \n \n
    \n-
    \n-Classes |\n-Namespaces
    \n-
    refinedp0localbasis.hh File Reference
    \n+
    nedelec.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 <dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh>
    \n+\n

    Go to the source code of this file.

    \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...
     
    \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,26 +1,12 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinedp0localbasis.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/_\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+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:_\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 ===============================================================================\n 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/a00011_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: nedelec.hh Source File\n \n \n \n \n \n \n \n@@ -70,119 +70,38 @@\n
    \n \n \n \n \n
    \n \n+
  • dune
  • localfunctions
  • \n
    \n \n
    \n-
    refinedp0localbasis.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 (C) 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_NEDELEC_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_HH
    \n
    7
    \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-
    37 template<class D, class R, int dim>
    \n-
    \n-\n-
    39 : public RefinedSimplexLocalBasis<D,dim>
    \n-
    40 {
    \n-
    41 // 2 to the k-th power
    \n-
    42 constexpr static int N = 1<<dim;
    \n-
    43 public:
    \n-
    45 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
    \n-
    46
    \n-
    \n-
    48 unsigned int size () const
    \n-
    49 {
    \n-
    50 return N;
    \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 int subElement = this->getSubElement(in);
    \n-
    58 out.resize(N);
    \n-
    59 for(int i=0; i<N; ++i)
    \n-
    60 out[i] = (i==subElement) ? 1 : 0;
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    63 inline void
    \n-
    \n-
    64 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    65 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    66 {
    \n-
    67 out.resize(N);
    \n-
    68 for(int i=0; i<N; ++i)
    \n-
    69 out[i][0] = 0;
    \n-
    70 }
    \n-
    \n-
    71
    \n-
    \n-
    73 void partial (const std::array<unsigned int, dim>& 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 {
    \n-
    81 out.resize(size());
    \n-
    82 for (std::size_t i = 0; i < size(); ++i)
    \n-
    83 out[i] = 0;
    \n-
    84 }
    \n-
    85 }
    \n-
    \n-
    86
    \n-
    \n-
    91 unsigned int order () const
    \n-
    92 {
    \n-
    93 return 0;
    \n-
    94 }
    \n-
    \n-
    95
    \n-
    96 };
    \n-
    \n-
    97
    \n-
    98}
    \n-
    99#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:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Definition refinedsimplexlocalbasis.hh:20
    \n-
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:40
    \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:73
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp0localbasis.hh:54
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Definition refinedp0localbasis.hh:64
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition refinedp0localbasis.hh:91
    \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:45
    \n-
    unsigned int size() const
    number of shape functions
    Definition refinedp0localbasis.hh:48
    \n-\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
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,131 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_NEDELEC_HH\n+6#define DUNE_LOCALFUNCTIONS_NEDELEC_HH\n 7\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-37 template\n-_\b3_\b8 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-39 : 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-40 {\n-41 // 2 to the k-th power\n-42 constexpr static int N = 1<,R,1,Dune::\n-FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-46\n-_\b4_\b8 unsigned int _\bs_\bi_\bz_\be () const\n-49 {\n-50 return N;\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 int subElement = this->getSubElement(in);\n-58 out.resize(N);\n-59 for(int i=0; i& out) const // return value\n-66 {\n-67 out.resize(N);\n-68 for(int i=0; i& _\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 {\n-81 out.resize(_\bs_\bi_\bz_\be());\n-82 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-83 out[i] = 0;\n-84 }\n-85 }\n-86\n-_\b9_\b1 unsigned int _\bo_\br_\bd_\be_\br () const\n-92 {\n-93 return 0;\n-94 }\n-95\n-96 };\n-97\n-98}\n-99#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:34\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: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\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:40\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:73\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 refinedp0localbasis.hh:54\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:64\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:91\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:45\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:48\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\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 ===============================================================================\n 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/a00014.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0localinterpolation.hh File Reference\n+dune-localfunctions: power.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    refinedp0localinterpolation.hh File Reference
    \n+
    power.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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+\n+\n \n

    \n Classes

    class  Dune::RefinedP0LocalInterpolation< LB >
    class  Dune::PowerFiniteElement< Backend, dimR >
     Meta-finite element turning a scalar finite element into vector-valued one. More...
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > >
    struct  Dune::PowerFiniteElement< Backend, dimR >::Traits
     types of component objects More...
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > >
     
    class  Dune::RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > >
    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,27 +1,33 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bm_\be_\bt_\ba\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-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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:_\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+ 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-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+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:_\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:_\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/a00014_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00014_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: power.hh Source File\n \n \n \n \n \n \n \n@@ -70,205 +70,144 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    refinedp0localinterpolation.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 (C) 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-
    7
    \n-\n-\n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    13 template<class LB>
    \n-
    \n-\n-
    15 {};
    \n-
    \n-
    16
    \n-
    17 template<class D, class R>
    \n-
    \n-\n-
    19 {
    \n-\n-
    21 typedef typename LB::Traits::DomainType DT;
    \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+
    12#include <dune/geometry/type.hh>
    \n+
    13
    \n+\n+\n+\n+
    17
    \n+
    18namespace Dune {
    \n+
    19
    \n
    22
    \n-
    23 public:
    \n-
    \n-\n-
    25 interpolationPoints_(2)
    \n-
    26 {
    \n-
    27 // Interpolation is done by evaluating at the halved segments centers
    \n-
    28 interpolationPoints_[0][0] = 1.0/4.0;
    \n-
    29
    \n-
    30 interpolationPoints_[1][0] = 3.0/4.0;
    \n-
    31 }
    \n-
    \n-
    32
    \n-
    33
    \n-
    34 template<typename F, typename C>
    \n-
    \n-
    35 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    36 {
    \n-
    37 auto&& f = Impl::makeFunctionWithCallOperator<DT>(ff);
    \n-
    38
    \n-
    39 out.resize(interpolationPoints_.size());
    \n-
    40 for (size_t i = 0; i < out.size(); ++i)
    \n-
    41 {
    \n-
    42 out[i] = f(interpolationPoints_[i]);
    \n-
    43 }
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    46 private:
    \n-
    47 std::vector<DT> interpolationPoints_;
    \n-
    48 };
    \n-
    \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-
    50 template<class D, class R>
    \n-
    \n-\n-
    52 {
    \n-\n-
    54 typedef typename LB::Traits::DomainType DT;
    \n-
    55
    \n-
    56 public:
    \n-
    \n-\n-
    58 interpolationPoints_(4)
    \n-
    59 {
    \n-
    60 // Interpolation is done by evaluating at the subtriangle centers
    \n-
    61 interpolationPoints_[0][0] = 1.0/6;
    \n-
    62 interpolationPoints_[0][1] = 1.0/6;
    \n-
    63
    \n-
    64 interpolationPoints_[1][0] = 4.0/6;
    \n-
    65 interpolationPoints_[1][1] = 1.0/6;
    \n-
    66
    \n-
    67 interpolationPoints_[2][0] = 1.0/6;
    \n-
    68 interpolationPoints_[2][1] = 4.0/6;
    \n-
    69
    \n-
    70 interpolationPoints_[3][0] = 2.0/6;
    \n-
    71 interpolationPoints_[3][1] = 2.0/6;
    \n-
    72 }
    \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-
    74
    \n-
    75 template<typename F, typename C>
    \n-
    \n-
    76 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    77 {
    \n-
    78 auto&& f = Impl::makeFunctionWithCallOperator<DT>(ff);
    \n+
    77 const typename Traits::Basis& basis() const { return basis_; }
    \n
    79
    \n-
    80 out.resize(interpolationPoints_.size());
    \n-
    81 for (size_t i = 0; i < out.size(); ++i)
    \n-
    82 {
    \n-
    83 out[i] = f(interpolationPoints_[i]);
    \n-
    84 }
    \n-
    85 }
    \n+
    \n+
    83 const typename Traits::Coefficients& coefficients() const
    \n+
    84 { return coefficients_; }
    \n
    \n
    86
    \n-
    87 private:
    \n-
    88 std::vector<DT> interpolationPoints_;
    \n-
    89 };
    \n-
    \n-
    90
    \n-
    91 template<class D, class R>
    \n-
    \n-\n-
    93 {
    \n-\n-
    95 typedef typename LB::Traits::DomainType DT;
    \n-
    96
    \n-
    97 public:
    \n-
    \n-\n-
    99 interpolationPoints_(8)
    \n-
    100 {
    \n-
    101 // Interpolation is done by evaluating at the subtriangle centers
    \n-
    102 interpolationPoints_[0][0] = 1.0/8;
    \n-
    103 interpolationPoints_[0][1] = 1.0/8;
    \n-
    104 interpolationPoints_[0][2] = 1.0/8;
    \n-
    105
    \n-
    106 interpolationPoints_[1][0] = 5.0/8;
    \n-
    107 interpolationPoints_[1][1] = 1.0/8;
    \n-
    108 interpolationPoints_[1][2] = 1.0/8;
    \n-
    109
    \n-
    110 interpolationPoints_[2][0] = 1.0/8;
    \n-
    111 interpolationPoints_[2][1] = 5.0/8;
    \n-
    112 interpolationPoints_[2][2] = 1.0/8;
    \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-
    114 interpolationPoints_[3][0] = 1.0/8;
    \n-
    115 interpolationPoints_[3][1] = 1.0/8;
    \n-
    116 interpolationPoints_[3][2] = 5.0/8;
    \n-
    117
    \n-
    118 interpolationPoints_[4][0] = 1.0/4;
    \n-
    119 interpolationPoints_[4][1] = 1.0/8;
    \n-
    120 interpolationPoints_[4][2] = 1.0/4;
    \n-
    121
    \n-
    122 interpolationPoints_[5][0] = 3.0/8;
    \n-
    123 interpolationPoints_[5][1] = 1.0/4;
    \n-
    124 interpolationPoints_[5][2] = 1.0/8;
    \n-
    125
    \n-
    126 interpolationPoints_[6][0] = 1.0/8;
    \n-
    127 interpolationPoints_[6][1] = 1.0/4;
    \n-
    128 interpolationPoints_[6][2] = 3.0/8;
    \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 interpolationPoints_[7][0] = 1.0/4;
    \n-
    131 interpolationPoints_[7][1] = 3.0/8;
    \n-
    132 interpolationPoints_[7][2] = 1.0/4;
    \n-
    133 }
    \n-
    \n-
    134
    \n-
    135
    \n-
    136 template<typename F, typename C>
    \n-
    \n-
    137 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    138 {
    \n-
    139 auto&& f = Impl::makeFunctionWithCallOperator<DT>(ff);
    \n-
    140
    \n-
    141 out.resize(interpolationPoints_.size());
    \n-
    142 for (size_t i = 0; i < out.size(); ++i)
    \n-
    143 {
    \n-
    144 out[i] = f(interpolationPoints_[i]);
    \n-
    145 }
    \n-
    146 }
    \n-
    \n-
    147
    \n-
    148 private:
    \n-
    149 std::vector<DT> interpolationPoints_;
    \n-
    150 };
    \n-
    \n-
    151}
    \n-
    152
    \n-
    153#endif
    \n-\n+
    130} // namespace Dune
    \n+
    131
    \n+
    132#endif // DUNE_LOCALFUNCTIONS_META_POWER_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:40
    \n-
    Definition refinedp0localinterpolation.hh:15
    \n-
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:24
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:35
    \n-
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:57
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:76
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:137
    \n-
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:98
    \n-\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:22
    \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,199 +1,171 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-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-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-13 template\n-_\b1_\b4 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-15 {};\n-16\n-17 template\n-_\b1_\b8 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-19 {\n-20 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-21 typedef typename LB::Traits::DomainType DT;\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+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-23 public:\n-_\b2_\b4 _\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-25 interpolationPoints_(2)\n-26 {\n-27 // Interpolation is done by evaluating at the halved segments centers\n-28 interpolationPoints_[0][0] = 1.0/4.0;\n-29\n-30 interpolationPoints_[1][0] = 3.0/4.0;\n-31 }\n-32\n-33\n-34 template\n-_\b3_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-36 {\n-37 auto&& f = Impl::makeFunctionWithCallOperator
    (ff);\n-38\n-39 out.resize(interpolationPoints_.size());\n-40 for (size_t i = 0; i < out.size(); ++i)\n-41 {\n-42 out[i] = f(interpolationPoints_[i]);\n-43 }\n-44 }\n-45\n-46 private:\n-47 std::vector
    interpolationPoints_;\n-48 };\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-50 template\n-_\b5_\b1 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-52 {\n-53 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-54 typedef typename LB::Traits::DomainType DT;\n-55\n-56 public:\n-_\b5_\b7 _\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-58 interpolationPoints_(4)\n-59 {\n-60 // Interpolation is done by evaluating at the subtriangle centers\n-61 interpolationPoints_[0][0] = 1.0/6;\n-62 interpolationPoints_[0][1] = 1.0/6;\n-63\n-64 interpolationPoints_[1][0] = 4.0/6;\n-65 interpolationPoints_[1][1] = 1.0/6;\n-66\n-67 interpolationPoints_[2][0] = 1.0/6;\n-68 interpolationPoints_[2][1] = 4.0/6;\n-69\n-70 interpolationPoints_[3][0] = 2.0/6;\n-71 interpolationPoints_[3][1] = 2.0/6;\n-72 }\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-74\n-75 template\n-_\b7_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-77 {\n-78 auto&& f = Impl::makeFunctionWithCallOperator
    (ff);\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-80 out.resize(interpolationPoints_.size());\n-81 for (size_t i = 0; i < out.size(); ++i)\n-82 {\n-83 out[i] = f(interpolationPoints_[i]);\n-84 }\n-85 }\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-87 private:\n-88 std::vector
    interpolationPoints_;\n-89 };\n-90\n-91 template\n-_\b9_\b2 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-93 {\n-94 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-95 typedef typename LB::Traits::DomainType DT;\n-96\n-97 public:\n-_\b9_\b8 _\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-99 interpolationPoints_(8)\n-100 {\n-101 // Interpolation is done by evaluating at the subtriangle centers\n-102 interpolationPoints_[0][0] = 1.0/8;\n-103 interpolationPoints_[0][1] = 1.0/8;\n-104 interpolationPoints_[0][2] = 1.0/8;\n-105\n-106 interpolationPoints_[1][0] = 5.0/8;\n-107 interpolationPoints_[1][1] = 1.0/8;\n-108 interpolationPoints_[1][2] = 1.0/8;\n-109\n-110 interpolationPoints_[2][0] = 1.0/8;\n-111 interpolationPoints_[2][1] = 5.0/8;\n-112 interpolationPoints_[2][2] = 1.0/8;\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-114 interpolationPoints_[3][0] = 1.0/8;\n-115 interpolationPoints_[3][1] = 1.0/8;\n-116 interpolationPoints_[3][2] = 5.0/8;\n-117\n-118 interpolationPoints_[4][0] = 1.0/4;\n-119 interpolationPoints_[4][1] = 1.0/8;\n-120 interpolationPoints_[4][2] = 1.0/4;\n-121\n-122 interpolationPoints_[5][0] = 3.0/8;\n-123 interpolationPoints_[5][1] = 1.0/4;\n-124 interpolationPoints_[5][2] = 1.0/8;\n-125\n-126 interpolationPoints_[6][0] = 1.0/8;\n-127 interpolationPoints_[6][1] = 1.0/4;\n-128 interpolationPoints_[6][2] = 3.0/8;\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 interpolationPoints_[7][0] = 1.0/4;\n-131 interpolationPoints_[7][1] = 3.0/8;\n-132 interpolationPoints_[7][2] = 1.0/4;\n-133 }\n-134\n-135\n-136 template\n-_\b1_\b3_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-138 {\n-139 auto&& f = Impl::makeFunctionWithCallOperator
    (ff);\n-140\n-141 out.resize(interpolationPoints_.size());\n-142 for (size_t i = 0; i < out.size(); ++i)\n-143 {\n-144 out[i] = f(interpolationPoints_[i]);\n-145 }\n-146 }\n-147\n-148 private:\n-149 std::vector
    interpolationPoints_;\n-150 };\n-151}\n-152\n-153#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+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:_\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: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\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:15\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:24\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:35\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:57\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:76\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:137\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:98\n-_\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_\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:22\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/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: refinedsimplexlocalbasis.hh File Reference\n+dune-localfunctions: refinedp0.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,58 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    refinedsimplexlocalbasis.hh File Reference
    \n+
    refinedp0.hh File Reference
    \n
    \n
    \n \n-

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

    Piecewise P0 finite element. \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-\n-\n+\n+\n \n

    \n Classes

    class  Dune::RefinedSimplexLocalBasis< D, dim >
    class  Dune::RefinedP0LocalFiniteElement< D, R, dim >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
     
    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::RefinedP0LocalFiniteElement< D, R, 1 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. 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::RefinedP0LocalFiniteElement< D, R, 2 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. 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::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-

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

    \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,38 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+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_\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+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_\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+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_\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+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_\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_\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-Contains a base class for LocalBasis classes based on uniform refinement.\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/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: refinedsimplexlocalbasis.hh Source File\n+dune-localfunctions: refinedp0.hh Source File\n \n \n \n \n \n \n \n@@ -70,291 +70,264 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    refinedsimplexlocalbasis.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 (C) 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_REFINED_P0_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_REFINED_P0_LOCALFINITEELEMENT_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-
    35 template<class D>
    \n-
    \n-\n-
    37 {
    \n-
    38 protected:
    \n-
    39
    \n-\n-
    42
    \n-
    \n-
    53 static int getSubElement(const FieldVector<D,1>& global)
    \n-
    54 {
    \n-
    55 if (global[0] <= 0.5)
    \n-
    56 return 0;
    \n-
    57 else if (global[0] <= 1.0)
    \n-
    58 return 1;
    \n-
    59
    \n-
    60 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    \n-
    69 static void getSubElement(const FieldVector<D,1>& global,
    \n-
    70 int& subElement,
    \n-
    71 FieldVector<D,1>& local)
    \n-
    72 {
    \n-
    73 if (global[0] <= 0.5) {
    \n-
    74 subElement = 0;
    \n-
    75 local[0] = 2.0 * global[0];
    \n-
    76 return;
    \n-
    77 }
    \n-
    78
    \n-
    79 subElement = 1;
    \n-
    80 local[0] = 2.0 * global[0] - 1.0;
    \n-
    81 }
    \n-
    \n-
    82
    \n-
    83 };
    \n-
    \n-
    84
    \n-
    85
    \n-
    96 template<class D>
    \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+
    25 template<class D, class R, int dim>
    \n+
    \n+\n+
    27 {
    \n+\n+
    29
    \n+
    30 public:
    \n+
    31 // We steal the p0 traits since they exist for all dim.
    \n+
    32 // This allows to instantiate the type and access the Traits.
    \n+\n+
    34 };
    \n+
    \n+
    35
    \n+
    38 template<class D, class R>
    \n+
    \n+\n+
    40 {
    \n+
    41 public:
    \n+\n+\n+\n+\n+
    48
    \n+\n+
    53
    \n+
    \n+
    56 const typename Traits::LocalBasisType& localBasis () const
    \n+
    57 {
    \n+
    58 return basis_;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+\n+
    64 {
    \n+
    65 return coefficients_;
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+\n+
    71 {
    \n+
    72 return interpolation_;
    \n+
    73 }
    \n+
    \n+
    74
    \n+
    \n+
    76 unsigned int size () const
    \n+
    77 {
    \n+
    78 return basis_.size();
    \n+
    79 }
    \n+
    \n+
    80
    \n+
    \n+
    83 static constexpr GeometryType type ()
    \n+
    84 {
    \n+
    85 return GeometryTypes::line;
    \n+
    86 }
    \n+
    \n+
    87
    \n+
    88 private:
    \n+\n+\n+\n+
    92 };
    \n+
    \n+
    93
    \n+
    96 template<class D, class R>
    \n
    \n-\n+\n
    98 {
    \n-
    99 protected:
    \n-
    100
    \n-\n-
    103
    \n-
    \n-
    119 static int getSubElement(const FieldVector<D,2>& global)
    \n-
    120 {
    \n-
    121 if (global[0] + global[1] <= 0.5)
    \n-
    122 return 0;
    \n-
    123 else if (global[0] >= 0.5)
    \n-
    124 return 1;
    \n-
    125 else if (global[1] >= 0.5)
    \n-
    126 return 2;
    \n-
    127
    \n-
    128 return 3;
    \n-
    129 }
    \n-
    \n-
    130
    \n-
    \n-
    137 static void getSubElement(const FieldVector<D,2>& global,
    \n-
    138 int& subElement,
    \n-
    139 FieldVector<D,2>& local)
    \n-
    140 {
    \n-
    141 if (global[0] + global[1] <= 0.5) {
    \n-
    142 subElement = 0;
    \n-
    143 local[0] = 2*global[0];
    \n-
    144 local[1] = 2*global[1];
    \n-
    145 return;
    \n-
    146 } else if (global[0] >= 0.5) {
    \n-
    147 subElement = 1;
    \n-
    148 local[0] = 2*global[0]-1;
    \n-
    149 local[1] = 2*global[1];
    \n-
    150 return;
    \n-
    151 } else if (global[1] >= 0.5) {
    \n-
    152 subElement = 2;
    \n-
    153 local[0] = 2*global[0];
    \n-
    154 local[1] = 2*global[1]-1;
    \n-
    155 return;
    \n-
    156 }
    \n-
    157
    \n-
    158 subElement = 3;
    \n-
    159 local[0] = -2 * global[0] + 1;
    \n-
    160 local[1] = -2 * global[1] + 1;
    \n-
    161
    \n-
    162 }
    \n-
    \n-
    163
    \n+
    99 public:
    \n+\n+\n+\n+\n+
    106
    \n+\n+
    111
    \n+
    \n+
    114 const typename Traits::LocalBasisType& localBasis () const
    \n+
    115 {
    \n+
    116 return basis_;
    \n+
    117 }
    \n+
    \n+
    118
    \n+
    \n+\n+
    122 {
    \n+
    123 return coefficients_;
    \n+
    124 }
    \n+
    \n+
    125
    \n+
    \n+\n+
    129 {
    \n+
    130 return interpolation_;
    \n+
    131 }
    \n+
    \n+
    132
    \n+
    \n+
    134 unsigned int size () const
    \n+
    135 {
    \n+
    136 return basis_.size();
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    \n+
    141 static constexpr GeometryType type ()
    \n+
    142 {
    \n+
    143 return GeometryTypes::triangle;
    \n+
    144 }
    \n+
    \n+
    145
    \n+
    146 private:
    \n+\n+
    148 RefinedP0LocalCoefficients<2> coefficients_;
    \n+\n+
    150 };
    \n+
    \n+
    151
    \n+
    154 template<class D, class R>
    \n+\n-
    166
    \n-
    177 template<class D>
    \n-
    \n-\n-
    179 {
    \n-
    180 protected:
    \n-
    181
    \n-\n-
    184
    \n-
    \n-
    215 static int getSubElement(const FieldVector<D,3>& global)
    \n-
    216 {
    \n-
    217 if (global[0] + global[1] + global[2] <= 0.5)
    \n-
    218 return 0;
    \n-
    219 else if (global[0] >= 0.5)
    \n-
    220 return 1;
    \n-
    221 else if (global[1] >= 0.5)
    \n-
    222 return 2;
    \n-
    223 else if (global[2] >= 0.5)
    \n-
    224 return 3;
    \n-
    225 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))
    \n-
    226 return 4;
    \n-
    227 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))
    \n-
    228 return 5;
    \n-
    229 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))
    \n-
    230 return 6;
    \n-
    231 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))
    \n-
    232 return 7;
    \n-
    233
    \n-
    234 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n-
    235
    \n-
    236 }
    \n-
    \n-
    \n-
    243 static void getSubElement(const FieldVector<D,3>& global,
    \n-
    244 int& subElement,
    \n-
    245 FieldVector<D,3>& local)
    \n-
    246 {
    \n-
    247 if (global[0] + global[1] + global[2] <= 0.5) {
    \n-
    248 subElement = 0;
    \n-
    249 local = global;
    \n-
    250 local *= 2.0;
    \n-
    251 return;
    \n-
    252 } else if (global[0] >= 0.5) {
    \n-
    253 subElement = 1;
    \n-
    254 local = global;
    \n-
    255 local[0] -= 0.5;
    \n-
    256 local *= 2.0;
    \n-
    257 return;
    \n-
    258 } else if (global[1] >= 0.5) {
    \n-
    259 subElement = 2;
    \n-
    260 local = global;
    \n-
    261 local[1] -= 0.5;
    \n-
    262 local *= 2.0;
    \n-
    263 return;
    \n-
    264 } else if (global[2] >= 0.5) {
    \n-
    265 subElement = 3;
    \n-
    266 local = global;
    \n-
    267 local[2] -= 0.5;
    \n-
    268 local *= 2.0;
    \n-
    269 return;
    \n-
    270 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n-
    271 subElement = 4;
    \n-
    272 local[0] = 2.0 * global[1];
    \n-
    273 local[1] = 2.0 * (0.5 - global[0] - global[1]);
    \n-
    274 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);
    \n-
    275 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    276 // A[0][1] = 2.0;
    \n-
    277 // A[1][0] = -2.0;
    \n-
    278 // A[1][1] = -2.0;
    \n-
    279 // A[2][0] = 2.0;
    \n-
    280 // A[2][1] = 2.0;
    \n-
    281 // A[2][2] = 2.0;
    \n-
    282 // A.mv(global,local);
    \n-
    283 // local[1] += 1.0;
    \n-
    284 // local[2] -= 1.0;
    \n-
    285 return;
    \n-
    286 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n-
    287 subElement = 5;
    \n-
    288 local[0] = 2.0 * (0.5 - global[0]);
    \n-
    289 local[1] = 2.0 * (0.5 - global[1] - global[2]);
    \n-
    290 local[2] = 2.0 * global[2];
    \n-
    291 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    292 // A[0][0] = -2.0;
    \n-
    293 // A[1][1] = -2.0;
    \n-
    294 // A[1][2] = -2.0;
    \n-
    295 // A[2][2] = 2.0;
    \n-
    296 // A.mv(global,local);
    \n-
    297 // local[0] += 1.0;
    \n-
    298 // local[1] += 1.0;
    \n-
    299 return;
    \n-
    300 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n-
    301 subElement = 6;
    \n-
    302 local[0] = 2.0 * (0.5 - global[0] - global[1]);
    \n-
    303 local[1] = 2.0 * global[0];
    \n-
    304 local[2] = 2.0 * (-0.5 + global[1] + global[2]);
    \n-
    305 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    306 // A[0][0] = -2.0;
    \n-
    307 // A[0][1] = -2.0;
    \n-
    308 // A[1][0] = 2.0;
    \n-
    309 // A[2][1] = 2.0;
    \n-
    310 // A[2][2] = 2.0;
    \n-
    311 // A.mv(global,local);
    \n-
    312 // local[0] += 1.0;
    \n-
    313 // local[2] -= 1.0;
    \n-
    314 return;
    \n-
    315 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n-
    316 subElement = 7;
    \n-
    317 local[0] = 2.0 * (-0.5 + global[1] + global[2]);
    \n-
    318 local[1] = 2.0 * (0.5 - global[1]);
    \n-
    319 local[2] = 2.0 * (-0.5 + global[0] + global[1]);
    \n-
    320 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n-
    321 // A[0][1] = 2.0;
    \n-
    322 // A[0][2] = 2.0;
    \n-
    323 // A[1][1] = -2.0;
    \n-
    324 // A[2][0] = 2.0;
    \n-
    325 // A[2][1] = 2.0;
    \n-
    326 // A.mv(global,local);
    \n-
    327 // local[0] -= 1.0;
    \n-
    328 // local[1] += 1.0;
    \n-
    329 // local[2] -= 1.0;
    \n-
    330 return;
    \n-
    331 }
    \n-
    332
    \n-
    333 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n-
    334
    \n-
    335 }
    \n-
    \n-
    336
    \n-
    337 };
    \n-
    \n-
    338
    \n-
    339
    \n-
    340}
    \n-
    341
    \n-
    342#endif
    \n+\n+
    169
    \n+
    \n+
    172 const typename Traits::LocalBasisType& localBasis () const
    \n+
    173 {
    \n+
    174 return basis_;
    \n+
    175 }
    \n+
    \n+
    176
    \n+
    \n+\n+
    180 {
    \n+
    181 return coefficients_;
    \n+
    182 }
    \n+
    \n+
    183
    \n+
    \n+\n+
    187 {
    \n+
    188 return interpolation_;
    \n+
    189 }
    \n+
    \n+
    190
    \n+
    \n+
    192 unsigned int size () const
    \n+
    193 {
    \n+
    194 return basis_.size();
    \n+
    195 }
    \n+
    \n+
    196
    \n+
    \n+
    199 static constexpr GeometryType type ()
    \n+
    200 {
    \n+
    201 return GeometryTypes::tetrahedron;
    \n+
    202 }
    \n+
    \n+
    203
    \n+
    204 private:
    \n+\n+
    206 RefinedP0LocalCoefficients<3> coefficients_;
    \n+\n+
    208 };
    \n+
    \n+
    209
    \n+
    210
    \n+
    211}
    \n+
    212
    \n+
    213#endif
    \n+\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:41
    \n-
    static void getSubElement(const FieldVector< D, 1 > &global, int &subElement, FieldVector< D, 1 > &local)
    Get local coordinates in the subelement.
    Definition refinedsimplexlocalbasis.hh:69
    \n-
    static int getSubElement(const FieldVector< D, 1 > &global)
    Get the number of the subelement containing a given point.
    Definition refinedsimplexlocalbasis.hh:53
    \n-
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:102
    \n-
    static int getSubElement(const FieldVector< D, 2 > &global)
    Get the number of the subtriangle containing a given point.
    Definition refinedsimplexlocalbasis.hh:119
    \n-
    static void getSubElement(const FieldVector< D, 2 > &global, int &subElement, FieldVector< D, 2 > &local)
    Get local coordinates in the subtriangle.
    Definition refinedsimplexlocalbasis.hh:137
    \n-
    static void getSubElement(const FieldVector< D, 3 > &global, int &subElement, FieldVector< D, 3 > &local)
    Get local coordinates in the subsimplex.
    Definition refinedsimplexlocalbasis.hh:243
    \n-
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:183
    \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:215
    \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+
    Local finite element that is piecewise P0 on a once uniformly refined reference geometry.
    Definition refinedp0.hh:27
    \n+
    P0LocalFiniteElement< D, R, dim >::Traits Traits
    Definition refinedp0.hh:33
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:56
    \n+
    static constexpr GeometryType type()
    Definition refinedp0.hh:83
    \n+
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:51
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:70
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:63
    \n+
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 1 >, RefinedP0LocalCoefficients< 1 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > > > Traits
    Definition refinedp0.hh:47
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:76
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:134
    \n+
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:109
    \n+
    static constexpr GeometryType type()
    Definition refinedp0.hh:141
    \n+
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 2 >, RefinedP0LocalCoefficients< 2 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > > > Traits
    Definition refinedp0.hh:105
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:121
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:128
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:114
    \n+
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:167
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:172
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:186
    \n+
    static constexpr GeometryType type()
    Definition refinedp0.hh:199
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:192
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:179
    \n+
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 3 >, RefinedP0LocalCoefficients< 3 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > > > Traits
    Definition refinedp0.hh:163
    \n+
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:40
    \n+
    Layout map for RefinedP0 elements.
    Definition refinedp0localcoefficients.hh:25
    \n+
    Definition refinedp0localinterpolation.hh:15
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,304 +1,281 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_REFINED_P0_LOCALFINITEELEMENT_HH\n+6#define DUNE_REFINED_P0_LOCALFINITEELEMENT_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-35 template\n-_\b3_\b6 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-37 {\n-38 protected:\n-39\n-_\b4_\b1 _\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-42\n-_\b5_\b3 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n-54 {\n-55 if (global[0] <= 0.5)\n-56 return 0;\n-57 else if (global[0] <= 1.0)\n-58 return 1;\n-59\n-60 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n-61 }\n-62\n-_\b6_\b9 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n-70 int& subElement,\n-71 FieldVector& local)\n-72 {\n-73 if (global[0] <= 0.5) {\n-74 subElement = 0;\n-75 local[0] = 2.0 * global[0];\n-76 return;\n-77 }\n-78\n-79 subElement = 1;\n-80 local[0] = 2.0 * global[0] - 1.0;\n-81 }\n-82\n-83 };\n-84\n-85\n-96 template\n-_\b9_\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+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+25 template\n+_\b2_\b6 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+27 {\n+28 _\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 public:\n+31 // We steal the p0 traits since they exist for all dim.\n+32 // This allows to instantiate the type and access the Traits.\n+_\b3_\b3 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+34 };\n+35\n+38 template\n+_\b3_\b9 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+40 {\n+41 public:\n+44 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+45 _\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+46 _\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+_\b4_\b7 _\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+48\n+_\b5_\b1 _\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+52 {}\n+53\n+_\b5_\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+57 {\n+58 return basis_;\n+59 }\n+60\n+_\b6_\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+64 {\n+65 return coefficients_;\n+66 }\n+67\n+_\b7_\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+71 {\n+72 return interpolation_;\n+73 }\n+74\n+_\b7_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+77 {\n+78 return basis_.size();\n+79 }\n+80\n+_\b8_\b3 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+84 {\n+85 return GeometryTypes::line;\n+86 }\n+87\n+88 private:\n+89 _\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+90 _\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+91 _\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+92 };\n+93\n+96 template\n+_\b9_\b7 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 98 {\n-99 protected:\n-100\n-_\b1_\b0_\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-103\n-_\b1_\b1_\b9 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n-120 {\n-121 if (global[0] + global[1] <= 0.5)\n-122 return 0;\n-123 else if (global[0] >= 0.5)\n-124 return 1;\n-125 else if (global[1] >= 0.5)\n-126 return 2;\n-127\n-128 return 3;\n-129 }\n-130\n-_\b1_\b3_\b7 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n-138 int& subElement,\n-139 FieldVector& local)\n-140 {\n-141 if (global[0] + global[1] <= 0.5) {\n-142 subElement = 0;\n-143 local[0] = 2*global[0];\n-144 local[1] = 2*global[1];\n-145 return;\n-146 } else if (global[0] >= 0.5) {\n-147 subElement = 1;\n-148 local[0] = 2*global[0]-1;\n-149 local[1] = 2*global[1];\n-150 return;\n-151 } else if (global[1] >= 0.5) {\n-152 subElement = 2;\n-153 local[0] = 2*global[0];\n-154 local[1] = 2*global[1]-1;\n-155 return;\n-156 }\n-157\n-158 subElement = 3;\n-159 local[0] = -2 * global[0] + 1;\n-160 local[1] = -2 * global[1] + 1;\n-161\n-162 }\n-163\n+99 public:\n+102 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+103 _\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+104 _\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_\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_\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+106\n+_\b1_\b0_\b9 _\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+110 {}\n+111\n+_\b1_\b1_\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+115 {\n+116 return basis_;\n+117 }\n+118\n+_\b1_\b2_\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+122 {\n+123 return coefficients_;\n+124 }\n+125\n+_\b1_\b2_\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+129 {\n+130 return interpolation_;\n+131 }\n+132\n+_\b1_\b3_\b4 unsigned int _\bs_\bi_\bz_\be () const\n+135 {\n+136 return basis_.size();\n+137 }\n+138\n+_\b1_\b4_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+142 {\n+143 return GeometryTypes::triangle;\n+144 }\n+145\n+146 private:\n+147 _\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+148 _\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+149 _\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+150 };\n+151\n+154 template\n+_\b1_\b5_\b5 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+156 {\n+157 public:\n+160 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+161 _\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+162 _\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_\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_\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 164\n-165 };\n-166\n-177 template\n-_\b1_\b7_\b8 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-179 {\n-180 protected:\n-181\n-_\b1_\b8_\b3 _\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-184\n-_\b2_\b1_\b5 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n-216 {\n-217 if (global[0] + global[1] + global[2] <= 0.5)\n-218 return 0;\n-219 else if (global[0] >= 0.5)\n-220 return 1;\n-221 else if (global[1] >= 0.5)\n-222 return 2;\n-223 else if (global[2] >= 0.5)\n-224 return 3;\n-225 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))\n-226 return 4;\n-227 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))\n-228 return 5;\n-229 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))\n-230 return 6;\n-231 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))\n-232 return 7;\n-233\n-234 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n-235\n-236 }\n-_\b2_\b4_\b3 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n-244 int& subElement,\n-245 FieldVector& local)\n-246 {\n-247 if (global[0] + global[1] + global[2] <= 0.5) {\n-248 subElement = 0;\n-249 local = global;\n-250 local *= 2.0;\n-251 return;\n-252 } else if (global[0] >= 0.5) {\n-253 subElement = 1;\n-254 local = global;\n-255 local[0] -= 0.5;\n-256 local *= 2.0;\n-257 return;\n-258 } else if (global[1] >= 0.5) {\n-259 subElement = 2;\n-260 local = global;\n-261 local[1] -= 0.5;\n-262 local *= 2.0;\n-263 return;\n-264 } else if (global[2] >= 0.5) {\n-265 subElement = 3;\n-266 local = global;\n-267 local[2] -= 0.5;\n-268 local *= 2.0;\n-269 return;\n-270 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <=\n-0.5)) {\n-271 subElement = 4;\n-272 local[0] = 2.0 * global[1];\n-273 local[1] = 2.0 * (0.5 - global[0] - global[1]);\n-274 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);\n-275 // Dune::FieldMatrix A(0.0);\n-276 // A[0][1] = 2.0;\n-277 // A[1][0] = -2.0;\n-278 // A[1][1] = -2.0;\n-279 // A[2][0] = 2.0;\n-280 // A[2][1] = 2.0;\n-281 // A[2][2] = 2.0;\n-282 // A.mv(global,local);\n-283 // local[1] += 1.0;\n-284 // local[2] -= 1.0;\n-285 return;\n-286 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <=\n-0.5)) {\n-287 subElement = 5;\n-288 local[0] = 2.0 * (0.5 - global[0]);\n-289 local[1] = 2.0 * (0.5 - global[1] - global[2]);\n-290 local[2] = 2.0 * global[2];\n-291 // Dune::FieldMatrix A(0.0);\n-292 // A[0][0] = -2.0;\n-293 // A[1][1] = -2.0;\n-294 // A[1][2] = -2.0;\n-295 // A[2][2] = 2.0;\n-296 // A.mv(global,local);\n-297 // local[0] += 1.0;\n-298 // local[1] += 1.0;\n-299 return;\n-300 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >=\n-0.5)) {\n-301 subElement = 6;\n-302 local[0] = 2.0 * (0.5 - global[0] - global[1]);\n-303 local[1] = 2.0 * global[0];\n-304 local[2] = 2.0 * (-0.5 + global[1] + global[2]);\n-305 // Dune::FieldMatrix A(0.0);\n-306 // A[0][0] = -2.0;\n-307 // A[0][1] = -2.0;\n-308 // A[1][0] = 2.0;\n-309 // A[2][1] = 2.0;\n-310 // A[2][2] = 2.0;\n-311 // A.mv(global,local);\n-312 // local[0] += 1.0;\n-313 // local[2] -= 1.0;\n-314 return;\n-315 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >=\n-0.5)) {\n-316 subElement = 7;\n-317 local[0] = 2.0 * (-0.5 + global[1] + global[2]);\n-318 local[1] = 2.0 * (0.5 - global[1]);\n-319 local[2] = 2.0 * (-0.5 + global[0] + global[1]);\n-320 // Dune::FieldMatrix A(0.0);\n-321 // A[0][1] = 2.0;\n-322 // A[0][2] = 2.0;\n-323 // A[1][1] = -2.0;\n-324 // A[2][0] = 2.0;\n-325 // A[2][1] = 2.0;\n-326 // A.mv(global,local);\n-327 // local[0] -= 1.0;\n-328 // local[1] += 1.0;\n-329 // local[2] -= 1.0;\n-330 return;\n-331 }\n-332\n-333 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n-334\n-335 }\n-336\n-337 };\n-338\n-339\n-340}\n-341\n-342#endif\n+_\b1_\b6_\b7 _\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+168 {}\n+169\n+_\b1_\b7_\b2 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+173 {\n+174 return basis_;\n+175 }\n+176\n+_\b1_\b7_\b9 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+180 {\n+181 return coefficients_;\n+182 }\n+183\n+_\b1_\b8_\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+187 {\n+188 return interpolation_;\n+189 }\n+190\n+_\b1_\b9_\b2 unsigned int _\bs_\bi_\bz_\be () const\n+193 {\n+194 return basis_.size();\n+195 }\n+196\n+_\b1_\b9_\b9 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+200 {\n+201 return GeometryTypes::tetrahedron;\n+202 }\n+203\n+204 private:\n+205 _\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+206 _\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+207 _\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+208 };\n+209\n+210\n+211}\n+212\n+213#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+_\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+_\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 _\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:41\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:69\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:53\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:102\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:119\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:137\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:243\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:183\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:215\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_\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:27\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:33\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:56\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:83\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: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:_\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:70\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:63\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:47\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:76\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: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:_\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:109\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:141\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:105\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:121\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:128\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:114\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:167\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:172\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:186\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:199\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:192\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:179\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:163\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: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\n+Layout map for RefinedP0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:25\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:15\n ===============================================================================\n 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: refinedp1localbasis.hh File Reference\n+dune-localfunctions: refinedp0localbasis.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-
    refinedp1localbasis.hh File Reference
    \n+
    refinedp0localbasis.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/fvector.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/refined/common/refinedsimplexlocalbasis.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 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::RefinedP0LocalBasis< D, R, dim >
     Uniformly refined constant shape functions on a unit simplex in R^dim. 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,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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-refinedp1localbasis.hh File Reference\n-Linear Lagrange shape functions on a uniformly refined reference element.\n-_\bM_\bo_\br_\be_\b._\b._\b.\n+refinedp0localbasis.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/_\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:_\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+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-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/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: refinedp1localbasis.hh Source File\n+dune-localfunctions: refinedp0localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,831 +70,119 @@\n \n \n \n \n \n \n \n
    \n-
    refinedp1localbasis.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 (C) 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_REFINED_P0_LOCALBASIS_HH
    \n+
    6#define DUNE_REFINED_P0_LOCALBASIS_HH
    \n
    7
    \n-
    12#include <numeric>
    \n-
    13
    \n-
    14#include <dune/common/fmatrix.hh>
    \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-\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-
    52 template<class D, class R>
    \n-
    \n-\n-
    54 : public RefinedSimplexLocalBasis<D,1>
    \n-
    55 {
    \n-
    56 public:
    \n-
    58 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n-
    59 Dune::FieldMatrix<R,1,1> > Traits;
    \n-
    60
    \n-
    \n-
    62 static constexpr unsigned int size ()
    \n-
    63 {
    \n-
    64 return 3;
    \n-
    65 }
    \n-
    \n-
    66
    \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(3);
    \n-
    72
    \n-
    73 int subElement;
    \n-
    74 typename Traits::DomainType local;
    \n-
    75 this->getSubElement(in, subElement, local);
    \n-
    76
    \n-
    77 switch (subElement) {
    \n-
    78 case 0 :
    \n-
    79
    \n-
    80 out[0] = 1 - local[0];
    \n-
    81 out[1] = local[0];
    \n-
    82 out[2] = 0;
    \n-
    83 break;
    \n-
    84
    \n-
    85 case 1 :
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    37 template<class D, class R, int dim>
    \n+
    \n+\n+
    39 : public RefinedSimplexLocalBasis<D,dim>
    \n+
    40 {
    \n+
    41 // 2 to the k-th power
    \n+
    42 constexpr static int N = 1<<dim;
    \n+
    43 public:
    \n+
    45 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
    \n+
    46
    \n+
    \n+
    48 unsigned int size () const
    \n+
    49 {
    \n+
    50 return N;
    \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 int subElement = this->getSubElement(in);
    \n+
    58 out.resize(N);
    \n+
    59 for(int i=0; i<N; ++i)
    \n+
    60 out[i] = (i==subElement) ? 1 : 0;
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    63 inline void
    \n+
    \n+
    64 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    65 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    66 {
    \n+
    67 out.resize(N);
    \n+
    68 for(int i=0; i<N; ++i)
    \n+
    69 out[i][0] = 0;
    \n+
    70 }
    \n+
    \n+
    71
    \n+
    \n+
    73 void partial (const std::array<unsigned int, dim>& 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 {
    \n+
    81 out.resize(size());
    \n+
    82 for (std::size_t i = 0; i < size(); ++i)
    \n+
    83 out[i] = 0;
    \n+
    84 }
    \n+
    85 }
    \n+
    \n
    86
    \n-
    87 out[0] = 0;
    \n-
    88 out[1] = 1 - local[0];
    \n-
    89 out[2] = local[0];
    \n-
    90 break;
    \n-
    91
    \n-
    92 }
    \n-
    93
    \n+
    \n+
    91 unsigned int order () const
    \n+
    92 {
    \n+
    93 return 0;
    \n
    94 }
    \n
    \n
    95
    \n-
    97 inline void
    \n-
    \n-
    98 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    99 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    100 {
    \n-
    101 out.resize(3);
    \n-
    102
    \n-
    103 int subElement;
    \n-
    104 typename Traits::DomainType local;
    \n-
    105 this->getSubElement(in, subElement, local);
    \n-
    106
    \n-
    107 switch (subElement) {
    \n-
    108 case 0 :
    \n-
    109
    \n-
    110 out[0][0][0] = -2;
    \n-
    111 out[1][0][0] = 2;
    \n-
    112 out[2][0][0] = 0;
    \n-
    113 break;
    \n-
    114
    \n-
    115 case 1 :
    \n-
    116
    \n-
    117 out[0][0][0] = 0;
    \n-
    118 out[1][0][0] = -2;
    \n-
    119 out[2][0][0] = 2;
    \n-
    120 break;
    \n-
    121
    \n-
    122 }
    \n-
    123 }
    \n-
    \n-
    124
    \n-
    \n-
    126 void partial (const std::array<unsigned int, 1>& order,
    \n-
    127 const typename Traits::DomainType& in, // position
    \n-
    128 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    129 {
    \n-
    130 auto totalOrder = order[0];
    \n-
    131 if (totalOrder == 0) {
    \n-
    132 evaluateFunction(in, out);
    \n-
    133 } else if (totalOrder == 1)
    \n-
    134 {
    \n-
    135 out.resize(3);
    \n-
    136
    \n-
    137 int subElement;
    \n-
    138 typename Traits::DomainType local;
    \n-
    139 this->getSubElement(in, subElement, local);
    \n-
    140
    \n-
    141 switch (subElement) {
    \n-
    142 case 0:
    \n-
    143 out[0] = -2;
    \n-
    144 out[1] = 2;
    \n-
    145 out[2] = 0;
    \n-
    146 break;
    \n-
    147 case 1:
    \n-
    148 out[0] = 0;
    \n-
    149 out[1] = -2;
    \n-
    150 out[2] = 2;
    \n-
    151 break;
    \n-
    152 }
    \n-
    153 } else {
    \n-
    154 out.resize(3);
    \n-
    155 out[0] = out[1] = out[2] = 0;
    \n-
    156 }
    \n-
    157 }
    \n-
    \n-
    158
    \n-
    \n-
    162 static constexpr unsigned int order ()
    \n-
    163 {
    \n-
    164 return 1;
    \n-
    165 }
    \n-
    \n-
    166
    \n-
    167 };
    \n-
    \n-
    168
    \n-
    193 template<class D, class R>
    \n-
    \n-\n-
    195 : public RefinedSimplexLocalBasis<D,2>
    \n-
    196 {
    \n-
    197 public:
    \n-
    199 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n-
    200 Dune::FieldMatrix<R,1,2> > Traits;
    \n-
    201
    \n-
    \n-
    203 static constexpr unsigned int size ()
    \n-
    204 {
    \n-
    205 return 6;
    \n-
    206 }
    \n-
    \n-
    207
    \n-
    \n-
    209 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    210 std::vector<typename Traits::RangeType>& out) const
    \n-
    211 {
    \n-
    212 out.resize(6);
    \n-
    213
    \n-
    214 int subElement;
    \n-
    215 typename Traits::DomainType local;
    \n-
    216 this->getSubElement(in, subElement, local);
    \n-
    217
    \n-
    218 switch (subElement) {
    \n-
    219 case 0 :
    \n-
    220
    \n-
    221 out[0] = 1 - local[0] - local[1];
    \n-
    222 out[1] = local[0];
    \n-
    223 out[2] = 0;
    \n-
    224 out[3] = local[1];
    \n-
    225 out[4] = 0;
    \n-
    226 out[5] = 0;
    \n-
    227 break;
    \n-
    228
    \n-
    229 case 1 :
    \n-
    230
    \n-
    231 out[0] = 0;
    \n-
    232 out[1] = 1 - local[0] - local[1];
    \n-
    233 out[2] = local[0];
    \n-
    234 out[3] = 0;
    \n-
    235 out[4] = local[1];
    \n-
    236 out[5] = 0;
    \n-
    237 break;
    \n-
    238
    \n-
    239 case 2 :
    \n-
    240
    \n-
    241 out[0] = 0;
    \n-
    242 out[1] = 0;
    \n-
    243 out[2] = 0;
    \n-
    244 out[3] = 1 - local[0] - local[1];
    \n-
    245 out[4] = local[0];
    \n-
    246 out[5] = local[1];
    \n-
    247 break;
    \n-
    248 case 3 :
    \n-
    249
    \n-
    250 out[0] = 0;
    \n-
    251 out[1] = local[1];
    \n-
    252 out[2] = 0;
    \n-
    253 out[3] = local[0];
    \n-
    254 out[4] = 1 - local[0] - local[1];
    \n-
    255 out[5] = 0;
    \n-
    256 }
    \n-
    257
    \n-
    258 }
    \n-
    \n-
    259
    \n-
    261 inline void
    \n-
    \n-
    262 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    263 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    264 {
    \n-
    265 out.resize(6);
    \n-
    266
    \n-
    267 int subElement;
    \n-
    268 typename Traits::DomainType local;
    \n-
    269 this->getSubElement(in, subElement, local);
    \n-
    270
    \n-
    271 switch (subElement) {
    \n-
    272 case 0 :
    \n-
    273
    \n-
    274 out[0][0][0] = -2; out[0][0][1] = -2;
    \n-
    275 out[1][0][0] = 2; out[1][0][1] = 0;
    \n-
    276 out[2][0][0] = 0; out[2][0][1] = 0;
    \n-
    277 out[3][0][0] = 0; out[3][0][1] = 2;
    \n-
    278 out[4][0][0] = 0; out[4][0][1] = 0;
    \n-
    279 out[5][0][0] = 0; out[5][0][1] = 0;
    \n-
    280 break;
    \n-
    281
    \n-
    282 case 1 :
    \n-
    283
    \n-
    284 out[0][0][0] = 0; out[0][0][1] = 0;
    \n-
    285 out[1][0][0] = -2; out[1][0][1] = -2;
    \n-
    286 out[2][0][0] = 2; out[2][0][1] = 0;
    \n-
    287 out[3][0][0] = 0; out[3][0][1] = 0;
    \n-
    288 out[4][0][0] = 0; out[4][0][1] = 2;
    \n-
    289 out[5][0][0] = 0; out[5][0][1] = 0;
    \n-
    290 break;
    \n-
    291
    \n-
    292 case 2 :
    \n-
    293
    \n-
    294 out[0][0][0] = 0; out[0][0][1] = 0;
    \n-
    295 out[1][0][0] = 0; out[1][0][1] = 0;
    \n-
    296 out[2][0][0] = 0; out[2][0][1] = 0;
    \n-
    297 out[3][0][0] = -2; out[3][0][1] = -2;
    \n-
    298 out[4][0][0] = 2; out[4][0][1] = 0;
    \n-
    299 out[5][0][0] = 0; out[5][0][1] = 2;
    \n-
    300 break;
    \n-
    301 case 3 :
    \n-
    302
    \n-
    303 out[0][0][0] = 0; out[0][0][1] = 0;
    \n-
    304 out[1][0][0] = 0; out[1][0][1] = -2;
    \n-
    305 out[2][0][0] = 0; out[2][0][1] = 0;
    \n-
    306 out[3][0][0] = -2; out[3][0][1] = 0;
    \n-
    307 out[4][0][0] = 2; out[4][0][1] = 2;
    \n-
    308 out[5][0][0] = 0; out[5][0][1] = 0;
    \n-
    309 }
    \n-
    310 }
    \n-
    \n-
    311
    \n-
    \n-
    313 void partial (const std::array<unsigned int, 2>& order,
    \n-
    314 const typename Traits::DomainType& in, // position
    \n-
    315 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    316 {
    \n-
    317 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    318 if (totalOrder == 0) {
    \n-
    319 evaluateFunction(in, out);
    \n-
    320 } else if (totalOrder == 1) {
    \n-
    321 int subElement;
    \n-
    322 typename Traits::DomainType local;
    \n-
    323 this->getSubElement(in, subElement, local);
    \n-
    324
    \n-
    325 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    326 out.resize(size());
    \n-
    327
    \n-
    328 for (std::size_t i = 0; i < size(); ++i)
    \n-
    329 out[i] = 0;
    \n-
    330
    \n-
    331 switch (direction) {
    \n-
    332 case 0: // direction == 0
    \n-
    333
    \n-
    334 switch (subElement) {
    \n-
    335 case 0 :
    \n-
    336 out[0] = -2;
    \n-
    337 out[1] = 2;
    \n-
    338 break;
    \n-
    339 case 1 :
    \n-
    340 out[1] = -2;
    \n-
    341 out[2] = 2;
    \n-
    342 break;
    \n-
    343 case 2 :
    \n-
    344 out[3] = -2;
    \n-
    345 out[4] = 2;
    \n-
    346 break;
    \n-
    347 case 3 :
    \n-
    348 out[3] = -2;
    \n-
    349 out[4] = 2;
    \n-
    350 }
    \n-
    351 break;
    \n-
    352
    \n-
    353 case 1: // direction == 1
    \n-
    354
    \n-
    355 switch (subElement) {
    \n-
    356 case 0 :
    \n-
    357 out[0] = -2;
    \n-
    358 out[3] = 2;
    \n-
    359 break;
    \n-
    360 case 1 :
    \n-
    361 out[1] = -2;
    \n-
    362 out[4] = 2;
    \n-
    363 break;
    \n-
    364 case 2 :
    \n-
    365 out[3] = -2;
    \n-
    366 out[5] = 2;
    \n-
    367 break;
    \n-
    368 case 3 :
    \n-
    369 out[1] = -2;
    \n-
    370 out[4] = 2;
    \n-
    371 }
    \n-
    372 break;
    \n-
    373
    \n-
    374 default:
    \n-
    375 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    376 }
    \n-
    377 } else {
    \n-
    378 out.resize(size());
    \n-
    379 for (std::size_t i = 0; i < size(); ++i)
    \n-
    380 out[i] = 0;
    \n-
    381 }
    \n-
    382 }
    \n-
    \n-
    383
    \n-
    \n-
    387 static constexpr unsigned int order ()
    \n-
    388 {
    \n-
    389 return 1;
    \n-
    390 }
    \n-
    \n-
    391
    \n-
    392 };
    \n-
    \n-
    393
    \n-
    422 template<class D, class R>
    \n-
    \n-\n-
    424 : public RefinedSimplexLocalBasis<D,3>
    \n-
    425 {
    \n-
    426 public:
    \n-
    428 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n-
    429 Dune::FieldMatrix<R,1,3> > Traits;
    \n-
    430
    \n-
    \n-
    432 static constexpr unsigned int size ()
    \n-
    433 {
    \n-
    434 return 10;
    \n-
    435 }
    \n-
    \n-
    436
    \n-
    \n-
    438 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    439 std::vector<typename Traits::RangeType>& out) const
    \n-
    440 {
    \n-
    441 out.resize(10);
    \n-
    442
    \n-
    443 int subElement;
    \n-
    444 typename Traits::DomainType local;
    \n-
    445 this->getSubElement(in, subElement, local);
    \n-
    446
    \n-
    447 switch (subElement) {
    \n-
    448 case 0 :
    \n-
    449
    \n-
    450 out[0] = 1 - local[0] - local[1] - local[2];
    \n-
    451 out[1] = local[0];
    \n-
    452 out[2] = 0;
    \n-
    453 out[3] = local[1];
    \n-
    454 out[4] = 0;
    \n-
    455 out[5] = 0;
    \n-
    456 out[6] = local[2];
    \n-
    457 out[7] = 0;
    \n-
    458 out[8] = 0;
    \n-
    459 out[9] = 0;
    \n-
    460 break;
    \n-
    461
    \n-
    462 case 1 :
    \n-
    463
    \n-
    464 out[0] = 0;
    \n-
    465 out[1] = 1 - local[0] - local[1] -local[2];
    \n-
    466 out[2] = local[0];
    \n-
    467 out[3] = 0;
    \n-
    468 out[4] = local[1];
    \n-
    469 out[5] = 0;
    \n-
    470 out[6] = 0;
    \n-
    471 out[7] = local[2];
    \n-
    472 out[8] = 0;
    \n-
    473 out[9] = 0;
    \n-
    474 break;
    \n-
    475
    \n-
    476 case 2 :
    \n-
    477
    \n-
    478 out[0] = 0;
    \n-
    479 out[1] = 0;
    \n-
    480 out[2] = 0;
    \n-
    481 out[3] = 1 - local[0] - local[1] -local[2];
    \n-
    482 out[4] = local[0];
    \n-
    483 out[5] = local[1];
    \n-
    484 out[6] = 0;
    \n-
    485 out[7] = 0;
    \n-
    486 out[8] = local[2];
    \n-
    487 out[9] = 0;
    \n-
    488 break;
    \n-
    489
    \n-
    490 case 3 :
    \n-
    491
    \n-
    492 out[0] = 0;
    \n-
    493 out[1] = 0;
    \n-
    494 out[2] = 0;
    \n-
    495 out[3] = 0;
    \n-
    496 out[4] = 0;
    \n-
    497 out[5] = 0;
    \n-
    498 out[6] = 1 - local[0] - local[1] -local[2];
    \n-
    499 out[7] = local[0];
    \n-
    500 out[8] = local[1];
    \n-
    501 out[9] = local[2];
    \n-
    502 break;
    \n-
    503
    \n-
    504 case 4 :
    \n-
    505
    \n-
    506 out[0] = 0;
    \n-
    507 out[1] = 1 - local[0] - local[1] -local[2];
    \n-
    508 out[2] = 0;
    \n-
    509 out[3] = local[0];
    \n-
    510 out[4] = 0;
    \n-
    511 out[5] = 0;
    \n-
    512 out[6] = local[1];
    \n-
    513 out[7] = local[2];
    \n-
    514 out[8] = 0;
    \n-
    515 out[9] = 0;
    \n-
    516 break;
    \n-
    517
    \n-
    518 case 5 :
    \n-
    519
    \n-
    520 out[0] = 0;
    \n-
    521 out[1] = local[1];
    \n-
    522 out[2] = 0;
    \n-
    523 out[3] = local[0];
    \n-
    524 out[4] = 1 - local[0] - local[1] -local[2];
    \n-
    525 out[5] = 0;
    \n-
    526 out[6] = 0;
    \n-
    527 out[7] = local[2];
    \n-
    528 out[8] = 0;
    \n-
    529 out[9] = 0;
    \n-
    530 break;
    \n-
    531
    \n-
    532 case 6 :
    \n-
    533
    \n-
    534 out[0] = 0;
    \n-
    535 out[1] = 0;
    \n-
    536 out[2] = 0;
    \n-
    537 out[3] = 1 - local[0] - local[1] -local[2];
    \n-
    538 out[4] = 0;
    \n-
    539 out[5] = 0;
    \n-
    540 out[6] = local[0];
    \n-
    541 out[7] = local[1];
    \n-
    542 out[8] = local[2];
    \n-
    543 out[9] = 0;
    \n-
    544 break;
    \n-
    545
    \n-
    546 case 7 :
    \n-
    547
    \n-
    548 out[0] = 0;
    \n-
    549 out[1] = 0;
    \n-
    550 out[2] = 0;
    \n-
    551 out[3] = 1 - local[0] - local[1] -local[2];
    \n-
    552 out[4] = local[2];
    \n-
    553 out[5] = 0;
    \n-
    554 out[6] = 0;
    \n-
    555 out[7] = local[1];
    \n-
    556 out[8] = local[0];
    \n-
    557 out[9] = 0;
    \n-
    558 break;
    \n-
    559 }
    \n-
    560
    \n-
    561 }
    \n-
    \n-
    562
    \n-
    564 inline void
    \n-
    \n-
    565 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    566 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    567 {
    \n-
    568 out.resize(10);
    \n-
    569
    \n-
    570 int subElement;
    \n-
    571 typename Traits::DomainType local;
    \n-
    572 this->getSubElement(in, subElement, local);
    \n-
    573
    \n-
    574 switch (subElement) {
    \n-
    575 case 0 :
    \n-
    576
    \n-
    577 out[0][0][0] = -2; out[0][0][1] = -2; out[0][0][2] = -2;
    \n-
    578 out[1][0][0] = 2; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    579 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    580 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;
    \n-
    581 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    582 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    583 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 2;
    \n-
    584 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    585 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    586 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    587 break;
    \n-
    588
    \n-
    589 case 1 :
    \n-
    590
    \n-
    591 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    592 out[1][0][0] = -2; out[1][0][1] = -2; out[1][0][2] = -2;
    \n-
    593 out[2][0][0] = 2; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    594 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n-
    595 out[4][0][0] = 0; out[4][0][1] = 2; out[4][0][2] = 0;
    \n-
    596 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    597 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    598 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;
    \n-
    599 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    600 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    601 break;
    \n-
    602
    \n-
    603 case 2 :
    \n-
    604
    \n-
    605 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    606 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    607 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    608 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;
    \n-
    609 out[4][0][0] = 2; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    610 out[5][0][0] = 0; out[5][0][1] = 2; out[5][0][2] = 0;
    \n-
    611 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    612 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    613 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 2;
    \n-
    614 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    615 break;
    \n-
    616
    \n-
    617 case 3 :
    \n-
    618
    \n-
    619 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    620 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    621 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    622 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;
    \n-
    623 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    624 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    625 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = -2;
    \n-
    626 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    627 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 0;
    \n-
    628 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 2;
    \n-
    629 break;
    \n-
    630
    \n-
    631 case 4 :
    \n-
    632
    \n-
    633 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    634 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;
    \n-
    635 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    636 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;
    \n-
    637 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    638 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    639 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;
    \n-
    640 out[7][0][0] = 2; out[7][0][1] = 2; out[7][0][2] = 2;
    \n-
    641 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    642 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    643 break;
    \n-
    644
    \n-
    645 case 5 :
    \n-
    646
    \n-
    647 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    648 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;
    \n-
    649 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    650 out[3][0][0] = -2; out[3][0][1] = 0; out[3][0][2] = 0;
    \n-
    651 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;
    \n-
    652 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    653 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    654 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;
    \n-
    655 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;
    \n-
    656 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    657 break;
    \n-
    658
    \n-
    659 case 6 :
    \n-
    660
    \n-
    661 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    662 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    663 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    664 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = -2;
    \n-
    665 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;
    \n-
    666 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    667 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;
    \n-
    668 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;
    \n-
    669 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;
    \n-
    670 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    671 break;
    \n-
    672
    \n-
    673 case 7 :
    \n-
    674
    \n-
    675 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;
    \n-
    676 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;
    \n-
    677 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    678 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;
    \n-
    679 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;
    \n-
    680 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;
    \n-
    681 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;
    \n-
    682 out[7][0][0] = 0; out[7][0][1] = -2; out[7][0][2] = 0;
    \n-
    683 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;
    \n-
    684 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;
    \n-
    685 break;
    \n-
    686 }
    \n-
    687 }
    \n-
    \n-
    688
    \n-
    \n-
    690 void partial (const std::array<unsigned int, 3>& order,
    \n-
    691 const typename Traits::DomainType& in, // position
    \n-
    692 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    693 {
    \n-
    694 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    695 if (totalOrder == 0) {
    \n-
    696 evaluateFunction(in, out);
    \n-
    697 } else if (totalOrder == 1) {
    \n-
    698 int subElement;
    \n-
    699 typename Traits::DomainType local;
    \n-
    700 this->getSubElement(in, subElement, local);
    \n-
    701
    \n-
    702 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    703 out.resize(size());
    \n-
    704
    \n-
    705 for (std::size_t i = 0; i < size(); ++i)
    \n-
    706 out[i] = 0;
    \n-
    707
    \n-
    708 switch (direction) {
    \n-
    709 case 0: // direction == 0
    \n-
    710
    \n-
    711 switch (subElement) {
    \n-
    712 case 0 :
    \n-
    713 out[0] = -2;
    \n-
    714 out[1] = 2;
    \n-
    715 break;
    \n-
    716 case 1 :
    \n-
    717 out[1] = -2;
    \n-
    718 out[2] = 2;
    \n-
    719 break;
    \n-
    720 case 2 :
    \n-
    721 out[3] = -2;
    \n-
    722 out[4] = 2;
    \n-
    723 break;
    \n-
    724 case 3 :
    \n-
    725 out[6] = -2;
    \n-
    726 out[7] = 2;
    \n-
    727 break;
    \n-
    728 case 4 :
    \n-
    729 out[6] = -2;
    \n-
    730 out[7] = 2;
    \n-
    731 break;
    \n-
    732 case 5 :
    \n-
    733 out[3] = -2;
    \n-
    734 out[4] = 2;
    \n-
    735 break;
    \n-
    736 case 6 :
    \n-
    737 out[6] = -2;
    \n-
    738 out[7] = 2;
    \n-
    739 break;
    \n-
    740 case 7 :
    \n-
    741 out[3] = -2;
    \n-
    742 out[4] = 2;
    \n-
    743 break;
    \n-
    744 }
    \n-
    745 break;
    \n-
    746
    \n-
    747 case 1: // direction == 1
    \n-
    748
    \n-
    749 switch (subElement) {
    \n-
    750 case 0 :
    \n-
    751 out[0] = -2;
    \n-
    752 out[3] = 2;
    \n-
    753 break;
    \n-
    754 case 1 :
    \n-
    755 out[1] = -2;
    \n-
    756 out[4] = 2;
    \n-
    757 break;
    \n-
    758 case 2 :
    \n-
    759 out[3] = -2;
    \n-
    760 out[5] = 2;
    \n-
    761 break;
    \n-
    762 case 3 :
    \n-
    763 out[6] = -2;
    \n-
    764 out[8] = 2;
    \n-
    765 break;
    \n-
    766 case 4 :
    \n-
    767 out[1] = -2;
    \n-
    768 out[3] = 2;
    \n-
    769 out[6] = -2;
    \n-
    770 break;
    \n-
    771 case 5 :
    \n-
    772 out[1] = -2;
    \n-
    773 out[4] = 2;
    \n-
    774 break;
    \n-
    775 case 6 :
    \n-
    776 out[6] = -2;
    \n-
    777 out[8] = 2;
    \n-
    778 break;
    \n-
    779 case 7 :
    \n-
    780 out[3] = -2;
    \n-
    781 out[4] = 2;
    \n-
    782 out[7] = -2;
    \n-
    783 out[8] = 2;
    \n-
    784 break;
    \n-
    785 }
    \n-
    786 break;
    \n-
    787
    \n-
    788 case 2: // direction == 2
    \n-
    789
    \n-
    790 switch (subElement) {
    \n-
    791 case 0 :
    \n-
    792 out[0] = -2;
    \n-
    793 out[6] = 2;
    \n-
    794 break;
    \n-
    795 case 1 :
    \n-
    796 out[1] = -2;
    \n-
    797 out[7] = 2;
    \n-
    798 break;
    \n-
    799 case 2 :
    \n-
    800 out[3] = -2;
    \n-
    801 out[8] = 2;
    \n-
    802 break;
    \n-
    803 case 3 :
    \n-
    804 out[6] = -2;
    \n-
    805 out[9] = 2;
    \n-
    806 break;
    \n-
    807 case 4 :
    \n-
    808 out[1] = -2;
    \n-
    809 out[7] = 2;
    \n-
    810 break;
    \n-
    811 case 5 :
    \n-
    812 out[1] = -2;
    \n-
    813 out[7] = 2;
    \n-
    814 break;
    \n-
    815 case 6 :
    \n-
    816 out[3] = -2;
    \n-
    817 out[8] = 2;
    \n-
    818 break;
    \n-
    819 case 7 :
    \n-
    820 out[3] = -2;
    \n-
    821 out[8] = 2;
    \n-
    822 break;
    \n-
    823 }
    \n-
    824 break;
    \n-
    825
    \n-
    826 default:
    \n-
    827 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    828 }
    \n-
    829 } else {
    \n-
    830 out.resize(size());
    \n-
    831 for (std::size_t i = 0; i < size(); ++i)
    \n-
    832 out[i] = 0;
    \n-
    833 }
    \n-
    834 }
    \n-
    \n-
    835
    \n-
    \n-
    839 static constexpr unsigned int order ()
    \n-
    840 {
    \n-
    841 return 1;
    \n-
    842 }
    \n-
    \n-
    843
    \n-
    844 };
    \n-
    \n-
    845}
    \n-
    846#endif
    \n-
    Contains a base class for LocalBasis classes based on uniform refinement.
    \n+
    96 };
    \n+
    \n+
    97
    \n+
    98}
    \n+
    99#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:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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:59
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:98
    \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:162
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:68
    \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:126
    \n-
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:62
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:262
    \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:200
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:209
    \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:313
    \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:387
    \n-
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:203
    \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:690
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp1localbasis.hh:438
    \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:429
    \n-
    static constexpr unsigned int size()
    number of shape functions
    Definition refinedp1localbasis.hh:432
    \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:839
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition refinedp1localbasis.hh:565
    \n+
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:40
    \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:73
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition refinedp0localbasis.hh:54
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Definition refinedp0localbasis.hh:64
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition refinedp0localbasis.hh:91
    \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:45
    \n+
    unsigned int size() const
    number of shape functions
    Definition refinedp0localbasis.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,869 +1,131 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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 (C) 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_REFINED_P0_LOCALBASIS_HH\n+6#define DUNE_REFINED_P0_LOCALBASIS_HH\n 7\n-12#include \n-13\n-14#include \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-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-52 template\n-_\b5_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-54 : 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-55 {\n-56 public:\n-58 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_\b9 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-60\n-_\b6_\b2 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-63 {\n-64 return 3;\n-65 }\n-66\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(3);\n-72\n-73 int subElement;\n-74 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-75 this->getSubElement(in, subElement, local);\n-76\n-77 switch (subElement) {\n-78 case 0 :\n-79\n-80 out[0] = 1 - local[0];\n-81 out[1] = local[0];\n-82 out[2] = 0;\n-83 break;\n-84\n-85 case 1 :\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+37 template\n+_\b3_\b8 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+39 : 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+40 {\n+41 // 2 to the k-th power\n+42 constexpr static int N = 1<,R,1,Dune::\n+FieldVector, Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+46\n+_\b4_\b8 unsigned int _\bs_\bi_\bz_\be () const\n+49 {\n+50 return N;\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 int subElement = this->getSubElement(in);\n+58 out.resize(N);\n+59 for(int i=0; i& out) const // return value\n+66 {\n+67 out.resize(N);\n+68 for(int i=0; i& _\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 {\n+81 out.resize(_\bs_\bi_\bz_\be());\n+82 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+83 out[i] = 0;\n+84 }\n+85 }\n 86\n-87 out[0] = 0;\n-88 out[1] = 1 - local[0];\n-89 out[2] = local[0];\n-90 break;\n-91\n-92 }\n-93\n+_\b9_\b1 unsigned int _\bo_\br_\bd_\be_\br () const\n+92 {\n+93 return 0;\n 94 }\n 95\n-97 inline void\n-_\b9_\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-99 std::vector& out) const // return value\n-100 {\n-101 out.resize(3);\n-102\n-103 int subElement;\n-104 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-105 this->getSubElement(in, subElement, local);\n-106\n-107 switch (subElement) {\n-108 case 0 :\n-109\n-110 out[0][0][0] = -2;\n-111 out[1][0][0] = 2;\n-112 out[2][0][0] = 0;\n-113 break;\n-114\n-115 case 1 :\n-116\n-117 out[0][0][0] = 0;\n-118 out[1][0][0] = -2;\n-119 out[2][0][0] = 2;\n-120 break;\n-121\n-122 }\n-123 }\n-124\n-_\b1_\b2_\b6 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-127 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-128 std::vector& out) const // return value\n-129 {\n-130 auto totalOrder = order[0];\n-131 if (totalOrder == 0) {\n-132 evaluateFunction(in, out);\n-133 } else if (totalOrder == 1)\n-134 {\n-135 out.resize(3);\n-136\n-137 int subElement;\n-138 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-139 this->getSubElement(in, subElement, local);\n-140\n-141 switch (subElement) {\n-142 case 0:\n-143 out[0] = -2;\n-144 out[1] = 2;\n-145 out[2] = 0;\n-146 break;\n-147 case 1:\n-148 out[0] = 0;\n-149 out[1] = -2;\n-150 out[2] = 2;\n-151 break;\n-152 }\n-153 } else {\n-154 out.resize(3);\n-155 out[0] = out[1] = out[2] = 0;\n-156 }\n-157 }\n-158\n-_\b1_\b6_\b2 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n-163 {\n-164 return 1;\n-165 }\n-166\n-167 };\n-168\n-193 template\n-_\b1_\b9_\b4 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-195 : 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-196 {\n-197 public:\n-199 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_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-201\n-_\b2_\b0_\b3 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-204 {\n-205 return 6;\n-206 }\n-207\n-_\b2_\b0_\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-210 std::vector& out) const\n-211 {\n-212 out.resize(6);\n-213\n-214 int subElement;\n-215 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-216 this->getSubElement(in, subElement, local);\n-217\n-218 switch (subElement) {\n-219 case 0 :\n-220\n-221 out[0] = 1 - local[0] - local[1];\n-222 out[1] = local[0];\n-223 out[2] = 0;\n-224 out[3] = local[1];\n-225 out[4] = 0;\n-226 out[5] = 0;\n-227 break;\n-228\n-229 case 1 :\n-230\n-231 out[0] = 0;\n-232 out[1] = 1 - local[0] - local[1];\n-233 out[2] = local[0];\n-234 out[3] = 0;\n-235 out[4] = local[1];\n-236 out[5] = 0;\n-237 break;\n-238\n-239 case 2 :\n-240\n-241 out[0] = 0;\n-242 out[1] = 0;\n-243 out[2] = 0;\n-244 out[3] = 1 - local[0] - local[1];\n-245 out[4] = local[0];\n-246 out[5] = local[1];\n-247 break;\n-248 case 3 :\n-249\n-250 out[0] = 0;\n-251 out[1] = local[1];\n-252 out[2] = 0;\n-253 out[3] = local[0];\n-254 out[4] = 1 - local[0] - local[1];\n-255 out[5] = 0;\n-256 }\n-257\n-258 }\n-259\n-261 inline void\n-_\b2_\b6_\b2 _\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-263 std::vector& out) const // return value\n-264 {\n-265 out.resize(6);\n-266\n-267 int subElement;\n-268 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-269 this->getSubElement(in, subElement, local);\n-270\n-271 switch (subElement) {\n-272 case 0 :\n-273\n-274 out[0][0][0] = -2; out[0][0][1] = -2;\n-275 out[1][0][0] = 2; out[1][0][1] = 0;\n-276 out[2][0][0] = 0; out[2][0][1] = 0;\n-277 out[3][0][0] = 0; out[3][0][1] = 2;\n-278 out[4][0][0] = 0; out[4][0][1] = 0;\n-279 out[5][0][0] = 0; out[5][0][1] = 0;\n-280 break;\n-281\n-282 case 1 :\n-283\n-284 out[0][0][0] = 0; out[0][0][1] = 0;\n-285 out[1][0][0] = -2; out[1][0][1] = -2;\n-286 out[2][0][0] = 2; out[2][0][1] = 0;\n-287 out[3][0][0] = 0; out[3][0][1] = 0;\n-288 out[4][0][0] = 0; out[4][0][1] = 2;\n-289 out[5][0][0] = 0; out[5][0][1] = 0;\n-290 break;\n-291\n-292 case 2 :\n-293\n-294 out[0][0][0] = 0; out[0][0][1] = 0;\n-295 out[1][0][0] = 0; out[1][0][1] = 0;\n-296 out[2][0][0] = 0; out[2][0][1] = 0;\n-297 out[3][0][0] = -2; out[3][0][1] = -2;\n-298 out[4][0][0] = 2; out[4][0][1] = 0;\n-299 out[5][0][0] = 0; out[5][0][1] = 2;\n-300 break;\n-301 case 3 :\n-302\n-303 out[0][0][0] = 0; out[0][0][1] = 0;\n-304 out[1][0][0] = 0; out[1][0][1] = -2;\n-305 out[2][0][0] = 0; out[2][0][1] = 0;\n-306 out[3][0][0] = -2; out[3][0][1] = 0;\n-307 out[4][0][0] = 2; out[4][0][1] = 2;\n-308 out[5][0][0] = 0; out[5][0][1] = 0;\n-309 }\n-310 }\n-311\n-_\b3_\b1_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-314 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-315 std::vector& out) const // return value\n-316 {\n-317 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-318 if (totalOrder == 0) {\n-319 evaluateFunction(in, out);\n-320 } else if (totalOrder == 1) {\n-321 int subElement;\n-322 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-323 this->getSubElement(in, subElement, local);\n-324\n-325 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-326 out.resize(size());\n-327\n-328 for (std::size_t i = 0; i < size(); ++i)\n-329 out[i] = 0;\n-330\n-331 switch (direction) {\n-332 case 0: // direction == 0\n-333\n-334 switch (subElement) {\n-335 case 0 :\n-336 out[0] = -2;\n-337 out[1] = 2;\n-338 break;\n-339 case 1 :\n-340 out[1] = -2;\n-341 out[2] = 2;\n-342 break;\n-343 case 2 :\n-344 out[3] = -2;\n-345 out[4] = 2;\n-346 break;\n-347 case 3 :\n-348 out[3] = -2;\n-349 out[4] = 2;\n-350 }\n-351 break;\n-352\n-353 case 1: // direction == 1\n-354\n-355 switch (subElement) {\n-356 case 0 :\n-357 out[0] = -2;\n-358 out[3] = 2;\n-359 break;\n-360 case 1 :\n-361 out[1] = -2;\n-362 out[4] = 2;\n-363 break;\n-364 case 2 :\n-365 out[3] = -2;\n-366 out[5] = 2;\n-367 break;\n-368 case 3 :\n-369 out[1] = -2;\n-370 out[4] = 2;\n-371 }\n-372 break;\n-373\n-374 default:\n-375 DUNE_THROW(RangeError, \"Component out of range.\");\n-376 }\n-377 } else {\n-378 out.resize(size());\n-379 for (std::size_t i = 0; i < size(); ++i)\n-380 out[i] = 0;\n-381 }\n-382 }\n-383\n-_\b3_\b8_\b7 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n-388 {\n-389 return 1;\n-390 }\n-391\n-392 };\n-393\n-422 template\n-_\b4_\b2_\b3 class _\bR_\be_\bf_\bi_\bn_\be_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-424 : 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-425 {\n-426 public:\n-428 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_\b2_\b9 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-430\n-_\b4_\b3_\b2 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-433 {\n-434 return 10;\n-435 }\n-436\n-_\b4_\b3_\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-439 std::vector& out) const\n-440 {\n-441 out.resize(10);\n-442\n-443 int subElement;\n-444 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-445 this->getSubElement(in, subElement, local);\n-446\n-447 switch (subElement) {\n-448 case 0 :\n-449\n-450 out[0] = 1 - local[0] - local[1] - local[2];\n-451 out[1] = local[0];\n-452 out[2] = 0;\n-453 out[3] = local[1];\n-454 out[4] = 0;\n-455 out[5] = 0;\n-456 out[6] = local[2];\n-457 out[7] = 0;\n-458 out[8] = 0;\n-459 out[9] = 0;\n-460 break;\n-461\n-462 case 1 :\n-463\n-464 out[0] = 0;\n-465 out[1] = 1 - local[0] - local[1] -local[2];\n-466 out[2] = local[0];\n-467 out[3] = 0;\n-468 out[4] = local[1];\n-469 out[5] = 0;\n-470 out[6] = 0;\n-471 out[7] = local[2];\n-472 out[8] = 0;\n-473 out[9] = 0;\n-474 break;\n-475\n-476 case 2 :\n-477\n-478 out[0] = 0;\n-479 out[1] = 0;\n-480 out[2] = 0;\n-481 out[3] = 1 - local[0] - local[1] -local[2];\n-482 out[4] = local[0];\n-483 out[5] = local[1];\n-484 out[6] = 0;\n-485 out[7] = 0;\n-486 out[8] = local[2];\n-487 out[9] = 0;\n-488 break;\n-489\n-490 case 3 :\n-491\n-492 out[0] = 0;\n-493 out[1] = 0;\n-494 out[2] = 0;\n-495 out[3] = 0;\n-496 out[4] = 0;\n-497 out[5] = 0;\n-498 out[6] = 1 - local[0] - local[1] -local[2];\n-499 out[7] = local[0];\n-500 out[8] = local[1];\n-501 out[9] = local[2];\n-502 break;\n-503\n-504 case 4 :\n-505\n-506 out[0] = 0;\n-507 out[1] = 1 - local[0] - local[1] -local[2];\n-508 out[2] = 0;\n-509 out[3] = local[0];\n-510 out[4] = 0;\n-511 out[5] = 0;\n-512 out[6] = local[1];\n-513 out[7] = local[2];\n-514 out[8] = 0;\n-515 out[9] = 0;\n-516 break;\n-517\n-518 case 5 :\n-519\n-520 out[0] = 0;\n-521 out[1] = local[1];\n-522 out[2] = 0;\n-523 out[3] = local[0];\n-524 out[4] = 1 - local[0] - local[1] -local[2];\n-525 out[5] = 0;\n-526 out[6] = 0;\n-527 out[7] = local[2];\n-528 out[8] = 0;\n-529 out[9] = 0;\n-530 break;\n-531\n-532 case 6 :\n-533\n-534 out[0] = 0;\n-535 out[1] = 0;\n-536 out[2] = 0;\n-537 out[3] = 1 - local[0] - local[1] -local[2];\n-538 out[4] = 0;\n-539 out[5] = 0;\n-540 out[6] = local[0];\n-541 out[7] = local[1];\n-542 out[8] = local[2];\n-543 out[9] = 0;\n-544 break;\n-545\n-546 case 7 :\n-547\n-548 out[0] = 0;\n-549 out[1] = 0;\n-550 out[2] = 0;\n-551 out[3] = 1 - local[0] - local[1] -local[2];\n-552 out[4] = local[2];\n-553 out[5] = 0;\n-554 out[6] = 0;\n-555 out[7] = local[1];\n-556 out[8] = local[0];\n-557 out[9] = 0;\n-558 break;\n-559 }\n-560\n-561 }\n-562\n-564 inline void\n-_\b5_\b6_\b5 _\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-566 std::vector& out) const // return value\n-567 {\n-568 out.resize(10);\n-569\n-570 int subElement;\n-571 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-572 this->getSubElement(in, subElement, local);\n-573\n-574 switch (subElement) {\n-575 case 0 :\n-576\n-577 out[0][0][0] = -2; out[0][0][1] = -2; out[0][0][2] = -2;\n-578 out[1][0][0] = 2; out[1][0][1] = 0; out[1][0][2] = 0;\n-579 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-580 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;\n-581 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-582 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-583 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 2;\n-584 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;\n-585 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-586 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-587 break;\n-588\n-589 case 1 :\n-590\n-591 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-592 out[1][0][0] = -2; out[1][0][1] = -2; out[1][0][2] = -2;\n-593 out[2][0][0] = 2; out[2][0][1] = 0; out[2][0][2] = 0;\n-594 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n-595 out[4][0][0] = 0; out[4][0][1] = 2; out[4][0][2] = 0;\n-596 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-597 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-598 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;\n-599 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-600 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-601 break;\n-602\n-603 case 2 :\n-604\n-605 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-606 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-607 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-608 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;\n-609 out[4][0][0] = 2; out[4][0][1] = 0; out[4][0][2] = 0;\n-610 out[5][0][0] = 0; out[5][0][1] = 2; out[5][0][2] = 0;\n-611 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-612 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 0;\n-613 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 2;\n-614 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-615 break;\n-616\n-617 case 3 :\n-618\n-619 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-620 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-621 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-622 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = 0;\n-623 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-624 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-625 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = -2;\n-626 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;\n-627 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 0;\n-628 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 2;\n-629 break;\n-630\n-631 case 4 :\n-632\n-633 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-634 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;\n-635 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-636 out[3][0][0] = 0; out[3][0][1] = 2; out[3][0][2] = 0;\n-637 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-638 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-639 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;\n-640 out[7][0][0] = 2; out[7][0][1] = 2; out[7][0][2] = 2;\n-641 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-642 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-643 break;\n-644\n-645 case 5 :\n-646\n-647 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-648 out[1][0][0] = 0; out[1][0][1] = -2; out[1][0][2] = -2;\n-649 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-650 out[3][0][0] = -2; out[3][0][1] = 0; out[3][0][2] = 0;\n-651 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;\n-652 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-653 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-654 out[7][0][0] = 0; out[7][0][1] = 0; out[7][0][2] = 2;\n-655 out[8][0][0] = 0; out[8][0][1] = 0; out[8][0][2] = 0;\n-656 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-657 break;\n-658\n-659 case 6 :\n-660\n-661 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-662 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-663 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-664 out[3][0][0] = 0; out[3][0][1] = 0; out[3][0][2] = -2;\n-665 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 0;\n-666 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-667 out[6][0][0] = -2; out[6][0][1] = -2; out[6][0][2] = 0;\n-668 out[7][0][0] = 2; out[7][0][1] = 0; out[7][0][2] = 0;\n-669 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;\n-670 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-671 break;\n-672\n-673 case 7 :\n-674\n-675 out[0][0][0] = 0; out[0][0][1] = 0; out[0][0][2] = 0;\n-676 out[1][0][0] = 0; out[1][0][1] = 0; out[1][0][2] = 0;\n-677 out[2][0][0] = 0; out[2][0][1] = 0; out[2][0][2] = 0;\n-678 out[3][0][0] = -2; out[3][0][1] = -2; out[3][0][2] = -2;\n-679 out[4][0][0] = 2; out[4][0][1] = 2; out[4][0][2] = 0;\n-680 out[5][0][0] = 0; out[5][0][1] = 0; out[5][0][2] = 0;\n-681 out[6][0][0] = 0; out[6][0][1] = 0; out[6][0][2] = 0;\n-682 out[7][0][0] = 0; out[7][0][1] = -2; out[7][0][2] = 0;\n-683 out[8][0][0] = 0; out[8][0][1] = 2; out[8][0][2] = 2;\n-684 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 0;\n-685 break;\n-686 }\n-687 }\n-688\n-_\b6_\b9_\b0 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-691 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-692 std::vector& out) const // return value\n-693 {\n-694 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-695 if (totalOrder == 0) {\n-696 evaluateFunction(in, out);\n-697 } else if (totalOrder == 1) {\n-698 int subElement;\n-699 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be local;\n-700 this->getSubElement(in, subElement, local);\n-701\n-702 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-703 out.resize(size());\n-704\n-705 for (std::size_t i = 0; i < size(); ++i)\n-706 out[i] = 0;\n-707\n-708 switch (direction) {\n-709 case 0: // direction == 0\n-710\n-711 switch (subElement) {\n-712 case 0 :\n-713 out[0] = -2;\n-714 out[1] = 2;\n-715 break;\n-716 case 1 :\n-717 out[1] = -2;\n-718 out[2] = 2;\n-719 break;\n-720 case 2 :\n-721 out[3] = -2;\n-722 out[4] = 2;\n-723 break;\n-724 case 3 :\n-725 out[6] = -2;\n-726 out[7] = 2;\n-727 break;\n-728 case 4 :\n-729 out[6] = -2;\n-730 out[7] = 2;\n-731 break;\n-732 case 5 :\n-733 out[3] = -2;\n-734 out[4] = 2;\n-735 break;\n-736 case 6 :\n-737 out[6] = -2;\n-738 out[7] = 2;\n-739 break;\n-740 case 7 :\n-741 out[3] = -2;\n-742 out[4] = 2;\n-743 break;\n-744 }\n-745 break;\n-746\n-747 case 1: // direction == 1\n-748\n-749 switch (subElement) {\n-750 case 0 :\n-751 out[0] = -2;\n-752 out[3] = 2;\n-753 break;\n-754 case 1 :\n-755 out[1] = -2;\n-756 out[4] = 2;\n-757 break;\n-758 case 2 :\n-759 out[3] = -2;\n-760 out[5] = 2;\n-761 break;\n-762 case 3 :\n-763 out[6] = -2;\n-764 out[8] = 2;\n-765 break;\n-766 case 4 :\n-767 out[1] = -2;\n-768 out[3] = 2;\n-769 out[6] = -2;\n-770 break;\n-771 case 5 :\n-772 out[1] = -2;\n-773 out[4] = 2;\n-774 break;\n-775 case 6 :\n-776 out[6] = -2;\n-777 out[8] = 2;\n-778 break;\n-779 case 7 :\n-780 out[3] = -2;\n-781 out[4] = 2;\n-782 out[7] = -2;\n-783 out[8] = 2;\n-784 break;\n-785 }\n-786 break;\n-787\n-788 case 2: // direction == 2\n-789\n-790 switch (subElement) {\n-791 case 0 :\n-792 out[0] = -2;\n-793 out[6] = 2;\n-794 break;\n-795 case 1 :\n-796 out[1] = -2;\n-797 out[7] = 2;\n-798 break;\n-799 case 2 :\n-800 out[3] = -2;\n-801 out[8] = 2;\n-802 break;\n-803 case 3 :\n-804 out[6] = -2;\n-805 out[9] = 2;\n-806 break;\n-807 case 4 :\n-808 out[1] = -2;\n-809 out[7] = 2;\n-810 break;\n-811 case 5 :\n-812 out[1] = -2;\n-813 out[7] = 2;\n-814 break;\n-815 case 6 :\n-816 out[3] = -2;\n-817 out[8] = 2;\n-818 break;\n-819 case 7 :\n-820 out[3] = -2;\n-821 out[8] = 2;\n-822 break;\n-823 }\n-824 break;\n-825\n-826 default:\n-827 DUNE_THROW(RangeError, \"Component out of range.\");\n-828 }\n-829 } else {\n-830 out.resize(size());\n-831 for (std::size_t i = 0; i < size(); ++i)\n-832 out[i] = 0;\n-833 }\n-834 }\n-835\n-_\b8_\b3_\b9 static constexpr unsigned int _\bo_\br_\bd_\be_\br ()\n-840 {\n-841 return 1;\n-842 }\n-843\n-844 };\n-845}\n-846#endif\n+96 };\n+97\n+98}\n+99#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:34\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: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\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:59\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:98\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:162\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:68\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:126\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:62\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:262\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:200\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:209\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+_\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:40\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 refinedp1localbasis.hh:313\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:387\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:203\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:690\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:73\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 refinedp1localbasis.hh:438\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:429\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: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:_\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:839\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:54\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-Evaluate Jacobian of all shape functions.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp1localbasis.hh:565\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localbasis.hh:64\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:91\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:45\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: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/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: localcoefficients.hh File Reference\n+dune-localfunctions: refinedp0localinterpolation.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-
    localcoefficients.hh File Reference
    \n+
    refinedp0localinterpolation.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+\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::BDFMCubeLocalCoefficients< D, R, dim, order >
     Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes. More...
    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,26 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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:_\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+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/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: localcoefficients.hh Source File\n+dune-localfunctions: refinedp0localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,102 +70,205 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    localcoefficients.hh
    \n+
    refinedp0localinterpolation.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright (C) 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-
    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-
    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+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 (C) 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+
    7
    \n+\n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    13 template<class LB>
    \n+
    \n+\n+
    15 {};
    \n+
    \n+
    16
    \n+
    17 template<class D, class R>
    \n+
    \n+\n+
    19 {
    \n+\n+
    21 typedef typename LB::Traits::DomainType DT;
    \n+
    22
    \n+
    23 public:
    \n+
    \n+\n+
    25 interpolationPoints_(2)
    \n+
    26 {
    \n+
    27 // Interpolation is done by evaluating at the halved segments centers
    \n+
    28 interpolationPoints_[0][0] = 1.0/4.0;
    \n+
    29
    \n+
    30 interpolationPoints_[1][0] = 3.0/4.0;
    \n+
    31 }
    \n+
    \n+
    32
    \n+
    33
    \n+
    34 template<typename F, typename C>
    \n+
    \n+
    35 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    36 {
    \n+
    37 auto&& f = Impl::makeFunctionWithCallOperator<DT>(ff);
    \n+
    38
    \n+
    39 out.resize(interpolationPoints_.size());
    \n+
    40 for (size_t i = 0; i < out.size(); ++i)
    \n+
    41 {
    \n+
    42 out[i] = f(interpolationPoints_[i]);
    \n+
    43 }
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    46 private:
    \n+
    47 std::vector<DT> interpolationPoints_;
    \n+
    48 };
    \n+
    \n+
    49
    \n+
    50 template<class D, class R>
    \n+
    \n+\n+
    52 {
    \n+\n+
    54 typedef typename LB::Traits::DomainType DT;
    \n+
    55
    \n+
    56 public:
    \n+
    \n+\n+
    58 interpolationPoints_(4)
    \n+
    59 {
    \n+
    60 // Interpolation is done by evaluating at the subtriangle centers
    \n+
    61 interpolationPoints_[0][0] = 1.0/6;
    \n+
    62 interpolationPoints_[0][1] = 1.0/6;
    \n+
    63
    \n+
    64 interpolationPoints_[1][0] = 4.0/6;
    \n+
    65 interpolationPoints_[1][1] = 1.0/6;
    \n+
    66
    \n+
    67 interpolationPoints_[2][0] = 1.0/6;
    \n+
    68 interpolationPoints_[2][1] = 4.0/6;
    \n+
    69
    \n+
    70 interpolationPoints_[3][0] = 2.0/6;
    \n+
    71 interpolationPoints_[3][1] = 2.0/6;
    \n+
    72 }
    \n+
    \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+
    75 template<typename F, typename C>
    \n+
    \n+
    76 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    77 {
    \n+
    78 auto&& f = Impl::makeFunctionWithCallOperator<DT>(ff);
    \n+
    79
    \n+
    80 out.resize(interpolationPoints_.size());
    \n+
    81 for (size_t i = 0; i < out.size(); ++i)
    \n+
    82 {
    \n+
    83 out[i] = f(interpolationPoints_[i]);
    \n+
    84 }
    \n+
    85 }
    \n+
    \n+
    86
    \n+
    87 private:
    \n+
    88 std::vector<DT> interpolationPoints_;
    \n+
    89 };
    \n+
    \n+
    90
    \n+
    91 template<class D, class R>
    \n+
    \n+\n+
    93 {
    \n+\n+
    95 typedef typename LB::Traits::DomainType DT;
    \n+
    96
    \n+
    97 public:
    \n+
    \n+\n+
    99 interpolationPoints_(8)
    \n+
    100 {
    \n+
    101 // Interpolation is done by evaluating at the subtriangle centers
    \n+
    102 interpolationPoints_[0][0] = 1.0/8;
    \n+
    103 interpolationPoints_[0][1] = 1.0/8;
    \n+
    104 interpolationPoints_[0][2] = 1.0/8;
    \n+
    105
    \n+
    106 interpolationPoints_[1][0] = 5.0/8;
    \n+
    107 interpolationPoints_[1][1] = 1.0/8;
    \n+
    108 interpolationPoints_[1][2] = 1.0/8;
    \n+
    109
    \n+
    110 interpolationPoints_[2][0] = 1.0/8;
    \n+
    111 interpolationPoints_[2][1] = 5.0/8;
    \n+
    112 interpolationPoints_[2][2] = 1.0/8;
    \n+
    113
    \n+
    114 interpolationPoints_[3][0] = 1.0/8;
    \n+
    115 interpolationPoints_[3][1] = 1.0/8;
    \n+
    116 interpolationPoints_[3][2] = 5.0/8;
    \n+
    117
    \n+
    118 interpolationPoints_[4][0] = 1.0/4;
    \n+
    119 interpolationPoints_[4][1] = 1.0/8;
    \n+
    120 interpolationPoints_[4][2] = 1.0/4;
    \n+
    121
    \n+
    122 interpolationPoints_[5][0] = 3.0/8;
    \n+
    123 interpolationPoints_[5][1] = 1.0/4;
    \n+
    124 interpolationPoints_[5][2] = 1.0/8;
    \n+
    125
    \n+
    126 interpolationPoints_[6][0] = 1.0/8;
    \n+
    127 interpolationPoints_[6][1] = 1.0/4;
    \n+
    128 interpolationPoints_[6][2] = 3.0/8;
    \n+
    129
    \n+
    130 interpolationPoints_[7][0] = 1.0/4;
    \n+
    131 interpolationPoints_[7][1] = 3.0/8;
    \n+
    132 interpolationPoints_[7][2] = 1.0/4;
    \n+
    133 }
    \n+
    \n+
    134
    \n+
    135
    \n+
    136 template<typename F, typename C>
    \n+
    \n+
    137 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    138 {
    \n+
    139 auto&& f = Impl::makeFunctionWithCallOperator<DT>(ff);
    \n+
    140
    \n+
    141 out.resize(interpolationPoints_.size());
    \n+
    142 for (size_t i = 0; i < out.size(); ++i)
    \n+
    143 {
    \n+
    144 out[i] = f(interpolationPoints_[i]);
    \n+
    145 }
    \n+
    146 }
    \n+
    \n+
    147
    \n+
    148 private:
    \n+
    149 std::vector<DT> interpolationPoints_;
    \n+
    150 };
    \n+
    \n+
    151}
    \n+
    152
    \n+
    153#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
    Definition localcoefficients.hh:33
    \n-
    BDFMCubeLocalCoefficients()
    Standard constructor.
    Definition localcoefficients.hh:42
    \n-
    std::size_t size() const
    number of coefficients
    Definition localcoefficients.hh:53
    \n-
    auto localKey(std::size_t i) const -> const LocalKey &
    geth i'th index
    Definition localcoefficients.hh:56
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:40
    \n+
    Definition refinedp0localinterpolation.hh:15
    \n+
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:24
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:35
    \n+
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:57
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:76
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition refinedp0localinterpolation.hh:137
    \n+
    RefinedP0LocalInterpolation()
    Definition refinedp0localinterpolation.hh:98
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,111 +1,199 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-localcoefficients.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// SPDX-FileCopyrightText: Copyright (C) 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 (C) 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-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-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+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+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+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+13 template\n+_\b1_\b4 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+15 {};\n+16\n+17 template\n+_\b1_\b8 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+19 {\n+20 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+21 typedef typename LB::Traits::DomainType DT;\n+22\n+23 public:\n+_\b2_\b4 _\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+25 interpolationPoints_(2)\n+26 {\n+27 // Interpolation is done by evaluating at the halved segments centers\n+28 interpolationPoints_[0][0] = 1.0/4.0;\n+29\n+30 interpolationPoints_[1][0] = 3.0/4.0;\n+31 }\n+32\n+33\n+34 template\n+_\b3_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+36 {\n+37 auto&& f = Impl::makeFunctionWithCallOperator
    (ff);\n+38\n+39 out.resize(interpolationPoints_.size());\n+40 for (size_t i = 0; i < out.size(); ++i)\n+41 {\n+42 out[i] = f(interpolationPoints_[i]);\n+43 }\n+44 }\n+45\n+46 private:\n+47 std::vector
    interpolationPoints_;\n+48 };\n+49\n+50 template\n+_\b5_\b1 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+52 {\n+53 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+54 typedef typename LB::Traits::DomainType DT;\n+55\n+56 public:\n+_\b5_\b7 _\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+58 interpolationPoints_(4)\n+59 {\n+60 // Interpolation is done by evaluating at the subtriangle centers\n+61 interpolationPoints_[0][0] = 1.0/6;\n+62 interpolationPoints_[0][1] = 1.0/6;\n+63\n+64 interpolationPoints_[1][0] = 4.0/6;\n+65 interpolationPoints_[1][1] = 1.0/6;\n+66\n+67 interpolationPoints_[2][0] = 1.0/6;\n+68 interpolationPoints_[2][1] = 4.0/6;\n+69\n+70 interpolationPoints_[3][0] = 2.0/6;\n+71 interpolationPoints_[3][1] = 2.0/6;\n+72 }\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+75 template\n+_\b7_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+77 {\n+78 auto&& f = Impl::makeFunctionWithCallOperator
    (ff);\n+79\n+80 out.resize(interpolationPoints_.size());\n+81 for (size_t i = 0; i < out.size(); ++i)\n+82 {\n+83 out[i] = f(interpolationPoints_[i]);\n+84 }\n+85 }\n+86\n+87 private:\n+88 std::vector
    interpolationPoints_;\n+89 };\n+90\n+91 template\n+_\b9_\b2 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+93 {\n+94 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+95 typedef typename LB::Traits::DomainType DT;\n+96\n+97 public:\n+_\b9_\b8 _\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+99 interpolationPoints_(8)\n+100 {\n+101 // Interpolation is done by evaluating at the subtriangle centers\n+102 interpolationPoints_[0][0] = 1.0/8;\n+103 interpolationPoints_[0][1] = 1.0/8;\n+104 interpolationPoints_[0][2] = 1.0/8;\n+105\n+106 interpolationPoints_[1][0] = 5.0/8;\n+107 interpolationPoints_[1][1] = 1.0/8;\n+108 interpolationPoints_[1][2] = 1.0/8;\n+109\n+110 interpolationPoints_[2][0] = 1.0/8;\n+111 interpolationPoints_[2][1] = 5.0/8;\n+112 interpolationPoints_[2][2] = 1.0/8;\n+113\n+114 interpolationPoints_[3][0] = 1.0/8;\n+115 interpolationPoints_[3][1] = 1.0/8;\n+116 interpolationPoints_[3][2] = 5.0/8;\n+117\n+118 interpolationPoints_[4][0] = 1.0/4;\n+119 interpolationPoints_[4][1] = 1.0/8;\n+120 interpolationPoints_[4][2] = 1.0/4;\n+121\n+122 interpolationPoints_[5][0] = 3.0/8;\n+123 interpolationPoints_[5][1] = 1.0/4;\n+124 interpolationPoints_[5][2] = 1.0/8;\n+125\n+126 interpolationPoints_[6][0] = 1.0/8;\n+127 interpolationPoints_[6][1] = 1.0/4;\n+128 interpolationPoints_[6][2] = 3.0/8;\n+129\n+130 interpolationPoints_[7][0] = 1.0/4;\n+131 interpolationPoints_[7][1] = 3.0/8;\n+132 interpolationPoints_[7][2] = 1.0/4;\n+133 }\n+134\n+135\n+136 template\n+_\b1_\b3_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+138 {\n+139 auto&& f = Impl::makeFunctionWithCallOperator
    (ff);\n+140\n+141 out.resize(interpolationPoints_.size());\n+142 for (size_t i = 0; i < out.size(); ++i)\n+143 {\n+144 out[i] = f(interpolationPoints_[i]);\n+145 }\n+146 }\n+147\n+148 private:\n+149 std::vector
    interpolationPoints_;\n+150 };\n+151}\n+152\n+153#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:_\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 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 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 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 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:23\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: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\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:15\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:24\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 &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:35\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:57\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 &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:76\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 &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localinterpolation.hh:137\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:98\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/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: bdfmcube.hh File Reference\n+dune-localfunctions: refinedp1.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-
    bdfmcube.hh File Reference
    \n+
    refinedp1.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::BDFMCubeLocalFiniteElement< D, R, dim, order >
     Brezzi-Douglas-Fortin-Marini finite elements for cubes. More...
    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,26 +1,25 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-bdfmcube.hh File Reference\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/_\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+#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-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+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/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: bdfmcube.hh Source File\n+dune-localfunctions: refinedp1.hh Source File\n \n \n \n \n \n \n \n@@ -70,95 +70,120 @@\n
    \n \n \n \n \n \n \n
    \n-
    bdfmcube.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 (C) 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_REFINED_REFINEDP1_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-\n-
    11
    \n-\n-\n-\n+\n+\n+
    12
    \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-\n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    25 template<class D, class R, int dim>
    \n+
    \n+\n+
    27 {
    \n+
    28 public:
    \n+\n+
    32 Impl::LagrangeSimplexLocalCoefficients<dim,2>,
    \n+
    33 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,dim,2> > > Traits;
    \n+
    34
    \n+\n+
    39
    \n+
    \n+
    42 const typename Traits::LocalBasisType& localBasis () const
    \n+
    43 {
    \n+
    44 return basis_;
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    \n+\n+
    50 {
    \n+
    51 return coefficients_;
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    \n+\n+
    57 {
    \n+
    58 return interpolation_;
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    62 unsigned int size () const
    \n+
    63 {
    \n+
    64 return basis_.size();
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    \n+
    69 static constexpr GeometryType type ()
    \n+
    70 {
    \n+
    71 return GeometryTypes::simplex(dim);
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    74 private:
    \n+\n+
    76 Impl::LagrangeSimplexLocalCoefficients<dim,2> coefficients_;
    \n+
    77 // Yes, the template argument here really is LagrangeSimplexLocalBasis, even though this is not
    \n+
    78 // the local basis of the refined locale finite element: The reason is that LagrangeSimplexLocalInterpolation
    \n+
    79 // uses this argument to determine the polynomial order, and RefinedP1LocalBasis returns order 1
    \n+
    80 // whereas order 2 is needed here.
    \n+
    81 Impl::LagrangeSimplexLocalInterpolation<Impl::LagrangeSimplexLocalBasis<D,R,dim,2> > interpolation_;
    \n+
    82 };
    \n+
    \n+
    83
    \n+
    84}
    \n+
    85
    \n+
    86#endif // DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH
    \n+
    Linear Lagrange shape functions on a uniformly refined reference element.
    \n+\n+\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 localcoefficients.hh:33
    \n-
    Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:38
    \n
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n-\n-\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:27
    \n+
    static constexpr GeometryType type()
    The element type that this finite element is defined on.
    Definition refinedp1.hh:69
    \n+
    unsigned int size() const
    Number of shape functions of this finite element.
    Definition refinedp1.hh:62
    \n+
    RefinedP1LocalFiniteElement()
    Default constructor.
    Definition refinedp1.hh:37
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Evaluates all degrees of freedom for a given function.
    Definition refinedp1.hh:56
    \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:33
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Produces the assignments of the degrees of freedom to the element subentities.
    Definition refinedp1.hh:49
    \n+
    const Traits::LocalBasisType & localBasis() const
    The set of shape functions.
    Definition refinedp1.hh:42
    \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,114 +1,140 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_REFINED_REFINEDP1_HH\n+6#define DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_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+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-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_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+16namespace _\bD_\bu_\bn_\be\n+17{\n+18\n+25 template\n+_\b2_\b6 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+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_\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+32 Impl::LagrangeSimplexLocalCoefficients,\n+_\b3_\b3 Impl::LagrangeSimplexLocalInterpolation > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+_\b3_\b7 _\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+38 {}\n+39\n+_\b4_\b2 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+43 {\n+44 return basis_;\n+45 }\n+46\n+_\b4_\b9 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+50 {\n+51 return coefficients_;\n+52 }\n+53\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_\b2 unsigned int _\bs_\bi_\bz_\be () const\n+63 {\n+64 return basis_.size();\n+65 }\n+66\n+_\b6_\b9 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+70 {\n+71 return GeometryTypes::simplex(dim);\n+72 }\n+73\n+74 private:\n+75 _\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+76 Impl::LagrangeSimplexLocalCoefficients coefficients_;\n+77 // Yes, the template argument here really is LagrangeSimplexLocalBasis, even\n+though this is not\n+78 // the local basis of the refined locale finite element: The reason is that\n+LagrangeSimplexLocalInterpolation\n+79 // uses this argument to determine the polynomial order, and\n+RefinedP1LocalBasis returns order 1\n+80 // whereas order 2 is needed here.\n+81 Impl::LagrangeSimplexLocalInterpolation > interpolation_;\n+82 };\n+83\n+84}\n+85\n+86#endif // DUNE_LOCALFUNCTIONS_REFINED_REFINEDP1_HH\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+_\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 _\bl_\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 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: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-_\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+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\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:27\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:69\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:62\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:37\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:56\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:33\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:49\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:42\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/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: crouzeixraviart.hh File Reference\n+dune-localfunctions: refinedsimplexlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,54 @@\n \n \n \n \n \n \n \n
    \n \n-
    crouzeixraviart.hh File Reference
    \n+
    refinedsimplexlocalbasis.hh File Reference
    \n
    \n
    \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+\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-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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::CrouzeixRaviartLocalFiniteElement< D, R, dim >
     Crouzeix-Raviart finite element. More...
    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-
    \n+

    Detailed Description

    \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,28 +1,38 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+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 \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_\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:_\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_\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+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/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: crouzeixraviart.hh Source File\n+dune-localfunctions: refinedsimplexlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,234 +70,291 @@\n \n \n \n \n \n \n \n
    \n-
    crouzeixraviart.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 (C) 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_REFINED_SIMPLEX_LOCALBASIS_HH
    \n+
    6#define DUNE_REFINED_SIMPLEX_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
    \n-
    14#include <dune/geometry/type.hh>
    \n-
    15#include <dune/geometry/referenceelements.hh>
    \n-
    16
    \n-\n-\n-\n-\n-
    21
    \n-
    22namespace Dune { namespace Impl
    \n-
    23{
    \n-
    30 template<class D, class R, unsigned int dim>
    \n-
    31 class CrouzeixRaviartLocalBasis
    \n-
    32 {
    \n-
    33 public:
    \n-
    34 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n-
    35
    \n-
    38 static constexpr unsigned int size ()
    \n-
    39 {
    \n-
    40 return dim+1;
    \n-
    41 }
    \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+
    35 template<class D>
    \n+
    \n+\n+
    37 {
    \n+
    38 protected:
    \n+
    39
    \n+\n
    42
    \n-
    44 void evaluateFunction(const typename Traits::DomainType& x,
    \n-
    45 std::vector<typename Traits::RangeType>& out) const
    \n-
    46 {
    \n-
    47 out.resize(size());
    \n-
    48
    \n-
    49 std::fill(out.begin(), out.end()-1, 1.0);
    \n-
    50 out.back() = 1.0-dim;
    \n-
    51
    \n-
    52 for (unsigned int i=0; i<dim; i++)
    \n-
    53 {
    \n-
    54 out[i] -= dim * x[dim-i-1];
    \n-
    55 out.back() += dim*x[i];
    \n-
    56 }
    \n-
    57 }
    \n-
    58
    \n-
    64 void evaluateJacobian(const typename Traits::DomainType& x,
    \n-
    65 std::vector<typename Traits::JacobianType>& out) const
    \n-
    66 {
    \n-
    67 out.resize(size());
    \n-
    68
    \n-
    69 for (unsigned i=0; i<dim; i++)
    \n-
    70 for (unsigned j=0; j<dim; j++)
    \n-
    71 out[i][0][j] = (i==(dim-1-j)) ? -(double)dim : 0;
    \n-
    72
    \n-
    73 std::fill(out.back()[0].begin(), out.back()[0].end(), dim);
    \n-
    74 }
    \n-
    75
    \n-
    82 void partial(const std::array<unsigned int,dim>& order,
    \n-
    83 const typename Traits::DomainType& in,
    \n-
    84 std::vector<typename Traits::RangeType>& out) const
    \n-
    85 {
    \n-
    86 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    87
    \n-
    88 out.resize(size());
    \n-
    89
    \n-
    90 if (totalOrder == 0) {
    \n-
    91 evaluateFunction(in, out);
    \n-
    92 return;
    \n-
    93 }
    \n-
    94
    \n-
    95 if (totalOrder==1)
    \n-
    96 {
    \n-
    97 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();
    \n-
    98
    \n-
    99 for (unsigned int i=0; i<dim; i++)
    \n-
    100 out[i] = (i==(dim-1-direction)) ? -(double)dim : 0.0;
    \n-
    101
    \n-
    102 out.back()[0] = dim;
    \n-
    103 }
    \n-
    104 else // all higher order derivatives are zero
    \n-
    105 std::fill(out.begin(), out.end(), 0);
    \n-
    106 }
    \n-
    107
    \n-
    109 static constexpr unsigned int order ()
    \n-
    110 {
    \n-
    111 return 1;
    \n-
    112 }
    \n-
    113 };
    \n-
    114
    \n-
    119 template<unsigned int dim>
    \n-
    120 class CrouzeixRaviartLocalCoefficients
    \n-
    121 {
    \n-
    122 public:
    \n-
    124 CrouzeixRaviartLocalCoefficients ()
    \n-
    125 : localKeys_(size())
    \n-
    126 {
    \n-
    127 for (std::size_t i=0; i<size(); i++)
    \n-
    128 localKeys_[i] = LocalKey(i,dim-1,0);
    \n+
    \n+
    53 static int getSubElement(const FieldVector<D,1>& global)
    \n+
    54 {
    \n+
    55 if (global[0] <= 0.5)
    \n+
    56 return 0;
    \n+
    57 else if (global[0] <= 1.0)
    \n+
    58 return 1;
    \n+
    59
    \n+
    60 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n+
    61 }
    \n+
    \n+
    62
    \n+
    \n+
    69 static void getSubElement(const FieldVector<D,1>& global,
    \n+
    70 int& subElement,
    \n+
    71 FieldVector<D,1>& local)
    \n+
    72 {
    \n+
    73 if (global[0] <= 0.5) {
    \n+
    74 subElement = 0;
    \n+
    75 local[0] = 2.0 * global[0];
    \n+
    76 return;
    \n+
    77 }
    \n+
    78
    \n+
    79 subElement = 1;
    \n+
    80 local[0] = 2.0 * global[0] - 1.0;
    \n+
    81 }
    \n+
    \n+
    82
    \n+
    83 };
    \n+
    \n+
    84
    \n+
    85
    \n+
    96 template<class D>
    \n+
    \n+\n+
    98 {
    \n+
    99 protected:
    \n+
    100
    \n+\n+
    103
    \n+
    \n+
    119 static int getSubElement(const FieldVector<D,2>& global)
    \n+
    120 {
    \n+
    121 if (global[0] + global[1] <= 0.5)
    \n+
    122 return 0;
    \n+
    123 else if (global[0] >= 0.5)
    \n+
    124 return 1;
    \n+
    125 else if (global[1] >= 0.5)
    \n+
    126 return 2;
    \n+
    127
    \n+
    128 return 3;
    \n
    129 }
    \n-
    130
    \n-
    132 static constexpr std::size_t size ()
    \n-
    133 {
    \n-
    134 return dim+1;
    \n-
    135 }
    \n-
    136
    \n-
    138 const LocalKey& localKey (std::size_t i) const
    \n-
    139 {
    \n-
    140 return localKeys_[i];
    \n-
    141 }
    \n-
    142
    \n-
    143 private:
    \n-
    144 std::vector<LocalKey> localKeys_;
    \n-
    145 };
    \n-
    146
    \n-
    151 template<class LocalBasis>
    \n-
    152 class CrouzeixRaviartLocalInterpolation
    \n-
    153 {
    \n-
    154 public:
    \n-
    155
    \n-
    163 template<typename F, typename C>
    \n-
    164 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    165 {
    \n-
    166 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n-
    167
    \n-
    168 auto&& f = Impl::makeFunctionWithCallOperator<typename LocalBasis::Traits::DomainType>(ff);
    \n-
    169
    \n-
    170 out.resize(LocalBasis::size());
    \n-
    171
    \n-
    172 // Evaluate at the facet midpoints
    \n-
    173 auto refSimplex = ReferenceElements<typename LocalBasis::Traits::DomainFieldType,dim>::simplex();
    \n-
    174 for (int i=0; i<refSimplex.size(1); i++)
    \n-
    175 out[i] = f(refSimplex.template geometry<1>(i).center());
    \n-
    176 }
    \n-
    177 };
    \n-
    178
    \n-
    179} } // namespace Dune::Impl
    \n-
    180
    \n-
    181namespace Dune
    \n-
    182{
    \n-
    189 template<class D, class R, int dim>
    \n-
    \n-\n-
    191 {
    \n-
    192 public:
    \n-\n-
    196 Impl::CrouzeixRaviartLocalCoefficients<dim>,
    \n-
    197 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > >;
    \n-
    198
    \n-
    \n-
    201 const typename Traits::LocalBasisType& localBasis() const
    \n-
    202 {
    \n-
    203 return basis_;
    \n-
    204 }
    \n-
    \n-
    205
    \n-
    \n-\n-
    209 {
    \n-
    210 return coefficients_;
    \n-
    211 }
    \n
    \n-
    212
    \n+
    130
    \n+
    \n+
    137 static void getSubElement(const FieldVector<D,2>& global,
    \n+
    138 int& subElement,
    \n+
    139 FieldVector<D,2>& local)
    \n+
    140 {
    \n+
    141 if (global[0] + global[1] <= 0.5) {
    \n+
    142 subElement = 0;
    \n+
    143 local[0] = 2*global[0];
    \n+
    144 local[1] = 2*global[1];
    \n+
    145 return;
    \n+
    146 } else if (global[0] >= 0.5) {
    \n+
    147 subElement = 1;
    \n+
    148 local[0] = 2*global[0]-1;
    \n+
    149 local[1] = 2*global[1];
    \n+
    150 return;
    \n+
    151 } else if (global[1] >= 0.5) {
    \n+
    152 subElement = 2;
    \n+
    153 local[0] = 2*global[0];
    \n+
    154 local[1] = 2*global[1]-1;
    \n+
    155 return;
    \n+
    156 }
    \n+
    157
    \n+
    158 subElement = 3;
    \n+
    159 local[0] = -2 * global[0] + 1;
    \n+
    160 local[1] = -2 * global[1] + 1;
    \n+
    161
    \n+
    162 }
    \n+
    \n+
    163
    \n+
    164
    \n+
    165 };
    \n+
    \n+
    166
    \n+
    177 template<class D>
    \n+
    \n+\n+
    179 {
    \n+
    180 protected:
    \n+
    181
    \n+\n+
    184
    \n
    \n-\n-
    216 {
    \n-
    217 return interpolation_;
    \n-
    218 }
    \n-
    \n-
    219
    \n-
    \n-
    221 static constexpr std::size_t size()
    \n-
    222 {
    \n-
    223 return dim+1;
    \n-
    224 }
    \n-
    \n-
    225
    \n-
    \n-
    228 static constexpr GeometryType type()
    \n-
    229 {
    \n-
    230 return GeometryTypes::simplex(dim);
    \n-
    231 }
    \n-
    \n-
    232
    \n-
    233 private:
    \n-
    234 Impl::CrouzeixRaviartLocalBasis<D,R,dim> basis_;
    \n-
    235 Impl::CrouzeixRaviartLocalCoefficients<dim> coefficients_;
    \n-
    236 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > interpolation_;
    \n-
    237 };
    \n-
    \n-
    238
    \n-
    239} // namespace Dune
    \n-
    240
    \n-
    241#endif // DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n-\n-\n+
    215 static int getSubElement(const FieldVector<D,3>& global)
    \n+
    216 {
    \n+
    217 if (global[0] + global[1] + global[2] <= 0.5)
    \n+
    218 return 0;
    \n+
    219 else if (global[0] >= 0.5)
    \n+
    220 return 1;
    \n+
    221 else if (global[1] >= 0.5)
    \n+
    222 return 2;
    \n+
    223 else if (global[2] >= 0.5)
    \n+
    224 return 3;
    \n+
    225 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))
    \n+
    226 return 4;
    \n+
    227 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))
    \n+
    228 return 5;
    \n+
    229 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))
    \n+
    230 return 6;
    \n+
    231 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))
    \n+
    232 return 7;
    \n+
    233
    \n+
    234 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n+
    235
    \n+
    236 }
    \n+
    \n+
    \n+
    243 static void getSubElement(const FieldVector<D,3>& global,
    \n+
    244 int& subElement,
    \n+
    245 FieldVector<D,3>& local)
    \n+
    246 {
    \n+
    247 if (global[0] + global[1] + global[2] <= 0.5) {
    \n+
    248 subElement = 0;
    \n+
    249 local = global;
    \n+
    250 local *= 2.0;
    \n+
    251 return;
    \n+
    252 } else if (global[0] >= 0.5) {
    \n+
    253 subElement = 1;
    \n+
    254 local = global;
    \n+
    255 local[0] -= 0.5;
    \n+
    256 local *= 2.0;
    \n+
    257 return;
    \n+
    258 } else if (global[1] >= 0.5) {
    \n+
    259 subElement = 2;
    \n+
    260 local = global;
    \n+
    261 local[1] -= 0.5;
    \n+
    262 local *= 2.0;
    \n+
    263 return;
    \n+
    264 } else if (global[2] >= 0.5) {
    \n+
    265 subElement = 3;
    \n+
    266 local = global;
    \n+
    267 local[2] -= 0.5;
    \n+
    268 local *= 2.0;
    \n+
    269 return;
    \n+
    270 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n+
    271 subElement = 4;
    \n+
    272 local[0] = 2.0 * global[1];
    \n+
    273 local[1] = 2.0 * (0.5 - global[0] - global[1]);
    \n+
    274 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);
    \n+
    275 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    276 // A[0][1] = 2.0;
    \n+
    277 // A[1][0] = -2.0;
    \n+
    278 // A[1][1] = -2.0;
    \n+
    279 // A[2][0] = 2.0;
    \n+
    280 // A[2][1] = 2.0;
    \n+
    281 // A[2][2] = 2.0;
    \n+
    282 // A.mv(global,local);
    \n+
    283 // local[1] += 1.0;
    \n+
    284 // local[2] -= 1.0;
    \n+
    285 return;
    \n+
    286 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5)) {
    \n+
    287 subElement = 5;
    \n+
    288 local[0] = 2.0 * (0.5 - global[0]);
    \n+
    289 local[1] = 2.0 * (0.5 - global[1] - global[2]);
    \n+
    290 local[2] = 2.0 * global[2];
    \n+
    291 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    292 // A[0][0] = -2.0;
    \n+
    293 // A[1][1] = -2.0;
    \n+
    294 // A[1][2] = -2.0;
    \n+
    295 // A[2][2] = 2.0;
    \n+
    296 // A.mv(global,local);
    \n+
    297 // local[0] += 1.0;
    \n+
    298 // local[1] += 1.0;
    \n+
    299 return;
    \n+
    300 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n+
    301 subElement = 6;
    \n+
    302 local[0] = 2.0 * (0.5 - global[0] - global[1]);
    \n+
    303 local[1] = 2.0 * global[0];
    \n+
    304 local[2] = 2.0 * (-0.5 + global[1] + global[2]);
    \n+
    305 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    306 // A[0][0] = -2.0;
    \n+
    307 // A[0][1] = -2.0;
    \n+
    308 // A[1][0] = 2.0;
    \n+
    309 // A[2][1] = 2.0;
    \n+
    310 // A[2][2] = 2.0;
    \n+
    311 // A.mv(global,local);
    \n+
    312 // local[0] += 1.0;
    \n+
    313 // local[2] -= 1.0;
    \n+
    314 return;
    \n+
    315 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5)) {
    \n+
    316 subElement = 7;
    \n+
    317 local[0] = 2.0 * (-0.5 + global[1] + global[2]);
    \n+
    318 local[1] = 2.0 * (0.5 - global[1]);
    \n+
    319 local[2] = 2.0 * (-0.5 + global[0] + global[1]);
    \n+
    320 // Dune::FieldMatrix<double,3,3> A(0.0);
    \n+
    321 // A[0][1] = 2.0;
    \n+
    322 // A[0][2] = 2.0;
    \n+
    323 // A[1][1] = -2.0;
    \n+
    324 // A[2][0] = 2.0;
    \n+
    325 // A[2][1] = 2.0;
    \n+
    326 // A.mv(global,local);
    \n+
    327 // local[0] -= 1.0;
    \n+
    328 // local[1] += 1.0;
    \n+
    329 // local[2] -= 1.0;
    \n+
    330 return;
    \n+
    331 }
    \n+
    332
    \n+
    333 DUNE_THROW(InvalidStateException, "no subelement defined");
    \n+
    334
    \n+
    335 }
    \n+
    \n+
    336
    \n+
    337 };
    \n+
    \n+
    338
    \n+
    339
    \n+
    340}
    \n+
    341
    \n+
    342#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    D DomainType
    domain type
    Definition common/localbasis.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-
    Crouzeix-Raviart finite element.
    Definition crouzeixraviart.hh:191
    \n-
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition crouzeixraviart.hh:228
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition crouzeixraviart.hh:208
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition crouzeixraviart.hh:215
    \n-
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition crouzeixraviart.hh:201
    \n-
    static constexpr std::size_t size()
    The number of shape functions.
    Definition crouzeixraviart.hh:221
    \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:41
    \n+
    static void getSubElement(const FieldVector< D, 1 > &global, int &subElement, FieldVector< D, 1 > &local)
    Get local coordinates in the subelement.
    Definition refinedsimplexlocalbasis.hh:69
    \n+
    static int getSubElement(const FieldVector< D, 1 > &global)
    Get the number of the subelement containing a given point.
    Definition refinedsimplexlocalbasis.hh:53
    \n+
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:102
    \n+
    static int getSubElement(const FieldVector< D, 2 > &global)
    Get the number of the subtriangle containing a given point.
    Definition refinedsimplexlocalbasis.hh:119
    \n+
    static void getSubElement(const FieldVector< D, 2 > &global, int &subElement, FieldVector< D, 2 > &local)
    Get local coordinates in the subtriangle.
    Definition refinedsimplexlocalbasis.hh:137
    \n+
    static void getSubElement(const FieldVector< D, 3 > &global, int &subElement, FieldVector< D, 3 > &local)
    Get local coordinates in the subsimplex.
    Definition refinedsimplexlocalbasis.hh:243
    \n+
    RefinedSimplexLocalBasis()
    Protected default constructor so this class can only be instantiated as a base class.
    Definition refinedsimplexlocalbasis.hh:183
    \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:215
    \n \n-\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,248 +1,304 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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 (C) 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_REFINED_SIMPLEX_LOCALBASIS_HH\n+6#define DUNE_REFINED_SIMPLEX_LOCALBASIS_HH\n 7\n-8#include \n-9#include \n-10\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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-30 template\n-31 class CrouzeixRaviartLocalBasis\n-32 {\n-33 public:\n-34 using Traits =\n-LocalBasisTraits,R,1,FieldVector,FieldMatrix\n->;\n-35\n-38 static constexpr unsigned int size ()\n-39 {\n-40 return dim+1;\n-41 }\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+35 template\n+_\b3_\b6 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+37 {\n+38 protected:\n+39\n+_\b4_\b1 _\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 42\n-44 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n-45 std::vector& out) const\n-46 {\n-47 out.resize(size());\n-48\n-49 std::fill(out.begin(), out.end()-1, 1.0);\n-50 out.back() = 1.0-dim;\n-51\n-52 for (unsigned int i=0; i& out) const\n-66 {\n-67 out.resize(size());\n-68\n-69 for (unsigned i=0; i& order,\n-83 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-84 std::vector& out) const\n-85 {\n-86 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-87\n-88 out.resize(size());\n-89\n-90 if (totalOrder == 0) {\n-91 evaluateFunction(in, out);\n-92 return;\n-93 }\n-94\n-95 if (totalOrder==1)\n-96 {\n-97 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();\n-98\n-99 for (unsigned int i=0; i\n-120 class CrouzeixRaviartLocalCoefficients\n-121 {\n-122 public:\n-124 CrouzeixRaviartLocalCoefficients ()\n-125 : localKeys_(size())\n-126 {\n-127 for (std::size_t i=0; i& global)\n+54 {\n+55 if (global[0] <= 0.5)\n+56 return 0;\n+57 else if (global[0] <= 1.0)\n+58 return 1;\n+59\n+60 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n+61 }\n+62\n+_\b6_\b9 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n+70 int& subElement,\n+71 FieldVector& local)\n+72 {\n+73 if (global[0] <= 0.5) {\n+74 subElement = 0;\n+75 local[0] = 2.0 * global[0];\n+76 return;\n+77 }\n+78\n+79 subElement = 1;\n+80 local[0] = 2.0 * global[0] - 1.0;\n+81 }\n+82\n+83 };\n+84\n+85\n+96 template\n+_\b9_\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+98 {\n+99 protected:\n+100\n+_\b1_\b0_\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+103\n+_\b1_\b1_\b9 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n+120 {\n+121 if (global[0] + global[1] <= 0.5)\n+122 return 0;\n+123 else if (global[0] >= 0.5)\n+124 return 1;\n+125 else if (global[1] >= 0.5)\n+126 return 2;\n+127\n+128 return 3;\n 129 }\n 130\n-132 static constexpr std::size_t size ()\n-133 {\n-134 return dim+1;\n-135 }\n-136\n-138 const LocalKey& localKey (std::size_t i) const\n-139 {\n-140 return localKeys_[i];\n-141 }\n-142\n-143 private:\n-144 std::vector localKeys_;\n-145 };\n-146\n-151 template\n-152 class CrouzeixRaviartLocalInterpolation\n-153 {\n-154 public:\n-155\n-163 template\n-164 void interpolate (const F& ff, std::vector& out) const\n-165 {\n-166 constexpr auto dim = LocalBasis::Traits::dimDomain;\n-167\n-168 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-169\n-170 out.resize(LocalBasis::size());\n-171\n-172 // Evaluate at the facet midpoints\n-173 auto refSimplex = ReferenceElements::simplex();\n-174 for (int i=0; i(i).center());\n-176 }\n-177 };\n-178\n-179} } // namespace Dune::Impl\n-180\n-181namespace _\bD_\bu_\bn_\be\n-182{\n-189 template\n-_\b1_\b9_\b0 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-191 {\n-192 public:\n-_\b1_\b9_\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-_\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-196 Impl::CrouzeixRaviartLocalCoefficients,\n-197 Impl::CrouzeixRaviartLocalInterpolation > >;\n-198\n-_\b2_\b0_\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-202 {\n-203 return basis_;\n-204 }\n-205\n-_\b2_\b0_\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-209 {\n-210 return coefficients_;\n-211 }\n-212\n-_\b2_\b1_\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+_\b1_\b3_\b7 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n+138 int& subElement,\n+139 FieldVector& local)\n+140 {\n+141 if (global[0] + global[1] <= 0.5) {\n+142 subElement = 0;\n+143 local[0] = 2*global[0];\n+144 local[1] = 2*global[1];\n+145 return;\n+146 } else if (global[0] >= 0.5) {\n+147 subElement = 1;\n+148 local[0] = 2*global[0]-1;\n+149 local[1] = 2*global[1];\n+150 return;\n+151 } else if (global[1] >= 0.5) {\n+152 subElement = 2;\n+153 local[0] = 2*global[0];\n+154 local[1] = 2*global[1]-1;\n+155 return;\n+156 }\n+157\n+158 subElement = 3;\n+159 local[0] = -2 * global[0] + 1;\n+160 local[1] = -2 * global[1] + 1;\n+161\n+162 }\n+163\n+164\n+165 };\n+166\n+177 template\n+_\b1_\b7_\b8 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+179 {\n+180 protected:\n+181\n+_\b1_\b8_\b3 _\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+184\n+_\b2_\b1_\b5 static int _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global)\n 216 {\n-217 return interpolation_;\n-218 }\n-219\n-_\b2_\b2_\b1 static constexpr std::size_t _\bs_\bi_\bz_\be()\n-222 {\n-223 return dim+1;\n-224 }\n-225\n-_\b2_\b2_\b8 static constexpr GeometryType _\bt_\by_\bp_\be()\n-229 {\n-230 return GeometryTypes::simplex(dim);\n-231 }\n-232\n-233 private:\n-234 Impl::CrouzeixRaviartLocalBasis basis_;\n-235 Impl::CrouzeixRaviartLocalCoefficients coefficients_;\n-236 Impl::CrouzeixRaviartLocalInterpolation > interpolation_;\n-237 };\n-238\n-239} // namespace Dune\n-240\n-241#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+217 if (global[0] + global[1] + global[2] <= 0.5)\n+218 return 0;\n+219 else if (global[0] >= 0.5)\n+220 return 1;\n+221 else if (global[1] >= 0.5)\n+222 return 2;\n+223 else if (global[2] >= 0.5)\n+224 return 3;\n+225 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <= 0.5))\n+226 return 4;\n+227 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <= 0.5))\n+228 return 5;\n+229 else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >= 0.5))\n+230 return 6;\n+231 else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >= 0.5))\n+232 return 7;\n+233\n+234 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n+235\n+236 }\n+_\b2_\b4_\b3 static void _\bg_\be_\bt_\bS_\bu_\bb_\bE_\bl_\be_\bm_\be_\bn_\bt(const FieldVector& global,\n+244 int& subElement,\n+245 FieldVector& local)\n+246 {\n+247 if (global[0] + global[1] + global[2] <= 0.5) {\n+248 subElement = 0;\n+249 local = global;\n+250 local *= 2.0;\n+251 return;\n+252 } else if (global[0] >= 0.5) {\n+253 subElement = 1;\n+254 local = global;\n+255 local[0] -= 0.5;\n+256 local *= 2.0;\n+257 return;\n+258 } else if (global[1] >= 0.5) {\n+259 subElement = 2;\n+260 local = global;\n+261 local[1] -= 0.5;\n+262 local *= 2.0;\n+263 return;\n+264 } else if (global[2] >= 0.5) {\n+265 subElement = 3;\n+266 local = global;\n+267 local[2] -= 0.5;\n+268 local *= 2.0;\n+269 return;\n+270 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] <=\n+0.5)) {\n+271 subElement = 4;\n+272 local[0] = 2.0 * global[1];\n+273 local[1] = 2.0 * (0.5 - global[0] - global[1]);\n+274 local[2] = 2.0 * (-0.5 + global[0] + global[1] + global[2]);\n+275 // Dune::FieldMatrix A(0.0);\n+276 // A[0][1] = 2.0;\n+277 // A[1][0] = -2.0;\n+278 // A[1][1] = -2.0;\n+279 // A[2][0] = 2.0;\n+280 // A[2][1] = 2.0;\n+281 // A[2][2] = 2.0;\n+282 // A.mv(global,local);\n+283 // local[1] += 1.0;\n+284 // local[2] -= 1.0;\n+285 return;\n+286 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] <=\n+0.5)) {\n+287 subElement = 5;\n+288 local[0] = 2.0 * (0.5 - global[0]);\n+289 local[1] = 2.0 * (0.5 - global[1] - global[2]);\n+290 local[2] = 2.0 * global[2];\n+291 // Dune::FieldMatrix A(0.0);\n+292 // A[0][0] = -2.0;\n+293 // A[1][1] = -2.0;\n+294 // A[1][2] = -2.0;\n+295 // A[2][2] = 2.0;\n+296 // A.mv(global,local);\n+297 // local[0] += 1.0;\n+298 // local[1] += 1.0;\n+299 return;\n+300 } else if ((global[0] + global[1] <= 0.5)and (global[1] + global[2] >=\n+0.5)) {\n+301 subElement = 6;\n+302 local[0] = 2.0 * (0.5 - global[0] - global[1]);\n+303 local[1] = 2.0 * global[0];\n+304 local[2] = 2.0 * (-0.5 + global[1] + global[2]);\n+305 // Dune::FieldMatrix A(0.0);\n+306 // A[0][0] = -2.0;\n+307 // A[0][1] = -2.0;\n+308 // A[1][0] = 2.0;\n+309 // A[2][1] = 2.0;\n+310 // A[2][2] = 2.0;\n+311 // A.mv(global,local);\n+312 // local[0] += 1.0;\n+313 // local[2] -= 1.0;\n+314 return;\n+315 } else if ((global[0] + global[1] >= 0.5)and (global[1] + global[2] >=\n+0.5)) {\n+316 subElement = 7;\n+317 local[0] = 2.0 * (-0.5 + global[1] + global[2]);\n+318 local[1] = 2.0 * (0.5 - global[1]);\n+319 local[2] = 2.0 * (-0.5 + global[0] + global[1]);\n+320 // Dune::FieldMatrix A(0.0);\n+321 // A[0][1] = 2.0;\n+322 // A[0][2] = 2.0;\n+323 // A[1][1] = -2.0;\n+324 // A[2][0] = 2.0;\n+325 // A[2][1] = 2.0;\n+326 // A.mv(global,local);\n+327 // local[0] -= 1.0;\n+328 // local[1] += 1.0;\n+329 // local[2] -= 1.0;\n+330 return;\n+331 }\n+332\n+333 DUNE_THROW(InvalidStateException, \"no subelement defined\");\n+334\n+335 }\n+336\n+337 };\n+338\n+339\n+340}\n+341\n+342#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_\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: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:_\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:191\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:228\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:208\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:215\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:201\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:221\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:41\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:69\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:53\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:102\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:119\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:137\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:243\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:183\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:215\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 ===============================================================================\n 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: orthonormalcompute.hh File Reference\n+dune-localfunctions: refined.hh File Reference\n \n \n \n \n \n \n \n@@ -65,58 +65,30 @@\n \n \n \n \n \n \n \n
    \n- \n-
    orthonormalcompute.hh File Reference
    \n+
    refined.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <iostream>
    \n-#include <fstream>
    \n-#include <iomanip>
    \n-#include <utility>
    \n-#include <map>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/utility/lfematrix.hh>
    \n-#include <dune/localfunctions/utility/monomialbasis.hh>
    \n-#include <dune/localfunctions/utility/multiindex.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-

    \n-Classes

    struct  ONBCompute::Integral< geometryId >
     
    class  ONBCompute::ONBMatrix< geometryId, scalar_t >
     
    \n-\n-\n-\n-

    \n-Namespaces

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

    \n-Functions

    template<class scalar_t >
    scalar_t ONBCompute::factorial (int start, int end)
     
    \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,36 +1,17 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-#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/_\bl_\bf_\be_\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+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-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 _\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+*\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/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: orthonormalcompute.hh Source File\n+dune-localfunctions: refined.hh Source File\n \n \n \n \n \n \n \n@@ -70,270 +70,29 @@\n \n \n \n \n \n \n \n
    \n-
    orthonormalcompute.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 (C) 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-
    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/fmatrix.hh>
    \n-
    16
    \n-
    17#include <dune/geometry/type.hh>
    \n-
    18
    \n-\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 };
    \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::LFEMatrix< scalar_t >
    \n-
    95 {
    \n-\n-\n-
    98
    \n-
    99 public:
    \n-
    100 typedef std::vector< scalar_t > vec_t;
    \n-\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-
    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( Base::operator()( 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 for( int l = 0; l <=col2; ++l )
    \n-
    154 ret += Base::operator()( l, col2 ) * S( l, k ) * Base::operator()( 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 Base::operator()( 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 Base::operator()( i, coldest ) -= s * Base::operator()( 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 Base::operator()( 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-\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-
    void row(unsigned int row, Vector &vec) const
    Definition orthonormalcompute.hh:139
    \n-
    Dune::LFEMatrix< scalar_t > mat_t
    Definition orthonormalcompute.hh:101
    \n-
    Definition lfematrix.hh:18
    \n-
    unsigned int cols() const
    Definition lfematrix.hh:63
    \n-
    void resize(const unsigned int rows, const unsigned int cols)
    Definition lfematrix.hh:80
    \n-
    const Field & operator()(const unsigned int row, const unsigned int col) const
    Definition lfematrix.hh:44
    \n-
    unsigned int rows() const
    Definition lfematrix.hh:58
    \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:37
    \n-
    int z(int i) const
    Definition multiindex.hh:91
    \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,293 +1,20 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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-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\n-17#include \n-18\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/_\bf_\bi_\be_\bl_\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/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\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 };\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 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx< 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 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> _\bB_\ba_\bs_\be;\n-98\n-99 public:\n-_\b1_\b0_\b0 typedef std::vector< scalar_t > _\bv_\be_\bc_\b__\bt;\n-_\b1_\b0_\b1 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> _\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 _\bB_\ba_\bs_\be_\b:_\b:_\br_\be_\bs_\bi_\bz_\be( size, size );\n-119 S._\br_\be_\bs_\bi_\bz_\be( size, size );\n-120 d.resize( size );\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 < _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bo_\bl_\bs() );\n-143 for( std::size_t i = 0; i < _\bB_\ba_\bs_\be_\b:_\b:_\br_\bo_\bw_\bs(); ++i )\n-144 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( Base::operator()( 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 for( int l = 0; l <=col2; ++l )\n-154 ret += Base::operator()( l, col2 ) * S( l, k ) * _\bB_\ba_\bs_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)( k, col1\n-);\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 Base::operator()( 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 Base::operator()( i, coldest ) -= s * Base::operator()( 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 = _\bB_\ba_\bs_\be_\b:_\b:_\br_\bo_\bw_\bs();\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 Base::operator()( 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-_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\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-_\bm_\bo_\bn_\bo_\bm_\bi_\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-_\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:_\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-_\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::LFEMatrix< scalar_t > mat_t\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:101\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 _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\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 lfematrix.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>_\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:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Field & operator()(const unsigned int row, const unsigned int col) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:44\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\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 lfematrix.hh:58\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:37\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:91\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/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: orthonormalbasis.hh File Reference\n+dune-localfunctions: crouzeixraviart.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+
    crouzeixraviart.hh File Reference
    \n
    \n
    \n-
    #include <sstream>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \n-#include <dune/localfunctions/orthonormal/orthonormalcompute.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/localinterpolation.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::CrouzeixRaviartLocalFiniteElement< D, R, dim >
     Crouzeix-Raviart finite element. 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.9.0\n Loading...\n Searching...\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\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+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_\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-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:_\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 ===============================================================================\n 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: orthonormalbasis.hh Source File\n+dune-localfunctions: crouzeixraviart.hh Source File\n \n \n \n \n \n \n \n@@ -70,115 +70,234 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    orthonormalbasis.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 (C) 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_CROUZEIXRAVIART_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_HH
    \n
    7
    \n-
    8#include <sstream>
    \n-
    9
    \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+
    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
    \n+
    14#include <dune/geometry/type.hh>
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16
    \n+\n+\n+\n+\n+
    21
    \n+
    22namespace Dune { namespace Impl
    \n+
    23{
    \n+
    30 template<class D, class R, unsigned int dim>
    \n+
    31 class CrouzeixRaviartLocalBasis
    \n+
    32 {
    \n+
    33 public:
    \n+
    34 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n+
    35
    \n+
    38 static constexpr unsigned int size ()
    \n+
    39 {
    \n+
    40 return dim+1;
    \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+
    44 void evaluateFunction(const typename Traits::DomainType& x,
    \n+
    45 std::vector<typename Traits::RangeType>& out) const
    \n+
    46 {
    \n+
    47 out.resize(size());
    \n+
    48
    \n+
    49 std::fill(out.begin(), out.end()-1, 1.0);
    \n+
    50 out.back() = 1.0-dim;
    \n+
    51
    \n+
    52 for (unsigned int i=0; i<dim; i++)
    \n+
    53 {
    \n+
    54 out[i] -= dim * x[dim-i-1];
    \n+
    55 out.back() += dim*x[i];
    \n+
    56 }
    \n+
    57 }
    \n+
    58
    \n+
    64 void evaluateJacobian(const typename Traits::DomainType& x,
    \n+
    65 std::vector<typename Traits::JacobianType>& out) const
    \n+
    66 {
    \n+
    67 out.resize(size());
    \n+
    68
    \n+
    69 for (unsigned i=0; i<dim; i++)
    \n+
    70 for (unsigned j=0; j<dim; j++)
    \n+
    71 out[i][0][j] = (i==(dim-1-j)) ? -(double)dim : 0;
    \n+
    72
    \n+
    73 std::fill(out.back()[0].begin(), out.back()[0].end(), dim);
    \n+
    74 }
    \n+
    75
    \n+
    82 void partial(const std::array<unsigned int,dim>& order,
    \n+
    83 const typename Traits::DomainType& in,
    \n+
    84 std::vector<typename Traits::RangeType>& out) const
    \n+
    85 {
    \n+
    86 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    87
    \n+
    88 out.resize(size());
    \n+
    89
    \n+
    90 if (totalOrder == 0) {
    \n+
    91 evaluateFunction(in, out);
    \n+
    92 return;
    \n+
    93 }
    \n+
    94
    \n+
    95 if (totalOrder==1)
    \n+
    96 {
    \n+
    97 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();
    \n+
    98
    \n+
    99 for (unsigned int i=0; i<dim; i++)
    \n+
    100 out[i] = (i==(dim-1-direction)) ? -(double)dim : 0.0;
    \n+
    101
    \n+
    102 out.back()[0] = dim;
    \n+
    103 }
    \n+
    104 else // all higher order derivatives are zero
    \n+
    105 std::fill(out.begin(), out.end(), 0);
    \n+
    106 }
    \n+
    107
    \n+
    109 static constexpr unsigned int order ()
    \n+
    110 {
    \n+
    111 return 1;
    \n+
    112 }
    \n+
    113 };
    \n+
    114
    \n+
    119 template<unsigned int dim>
    \n+
    120 class CrouzeixRaviartLocalCoefficients
    \n+
    121 {
    \n+
    122 public:
    \n+
    124 CrouzeixRaviartLocalCoefficients ()
    \n+
    125 : localKeys_(size())
    \n+
    126 {
    \n+
    127 for (std::size_t i=0; i<size(); i++)
    \n+
    128 localKeys_[i] = LocalKey(i,dim-1,0);
    \n+
    129 }
    \n+
    130
    \n+
    132 static constexpr std::size_t size ()
    \n+
    133 {
    \n+
    134 return dim+1;
    \n+
    135 }
    \n+
    136
    \n+
    138 const LocalKey& localKey (std::size_t i) const
    \n+
    139 {
    \n+
    140 return localKeys_[i];
    \n+
    141 }
    \n+
    142
    \n+
    143 private:
    \n+
    144 std::vector<LocalKey> localKeys_;
    \n+
    145 };
    \n+
    146
    \n+
    151 template<class LocalBasis>
    \n+
    152 class CrouzeixRaviartLocalInterpolation
    \n+
    153 {
    \n+
    154 public:
    \n+
    155
    \n+
    163 template<typename F, typename C>
    \n+
    164 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    165 {
    \n+
    166 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n+
    167
    \n+
    168 auto&& f = Impl::makeFunctionWithCallOperator<typename LocalBasis::Traits::DomainType>(ff);
    \n+
    169
    \n+
    170 out.resize(LocalBasis::size());
    \n+
    171
    \n+
    172 // Evaluate at the facet midpoints
    \n+
    173 auto refSimplex = ReferenceElements<typename LocalBasis::Traits::DomainFieldType,dim>::simplex();
    \n+
    174 for (int i=0; i<refSimplex.size(1); i++)
    \n+
    175 out[i] = f(refSimplex.template geometry<1>(i).center());
    \n+
    176 }
    \n+
    177 };
    \n+
    178
    \n+
    179} } // namespace Dune::Impl
    \n+
    180
    \n+
    181namespace Dune
    \n+
    182{
    \n+
    189 template<class D, class R, int dim>
    \n+
    \n+\n+
    191 {
    \n+
    192 public:
    \n+\n+
    196 Impl::CrouzeixRaviartLocalCoefficients<dim>,
    \n+
    197 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > >;
    \n+
    198
    \n+
    \n+
    201 const typename Traits::LocalBasisType& localBasis() const
    \n+
    202 {
    \n+
    203 return basis_;
    \n+
    204 }
    \n+
    \n+
    205
    \n+
    \n+\n+
    209 {
    \n+
    210 return coefficients_;
    \n+
    211 }
    \n+
    \n+
    212
    \n+
    \n+\n+
    216 {
    \n+
    217 return interpolation_;
    \n+
    218 }
    \n+
    \n+
    219
    \n+
    \n+
    221 static constexpr std::size_t size()
    \n+
    222 {
    \n+
    223 return dim+1;
    \n+
    224 }
    \n+
    \n+
    225
    \n+
    \n+
    228 static constexpr GeometryType type()
    \n+
    229 {
    \n+
    230 return GeometryTypes::simplex(dim);
    \n+
    231 }
    \n+
    \n+
    232
    \n+
    233 private:
    \n+
    234 Impl::CrouzeixRaviartLocalBasis<D,R,dim> basis_;
    \n+
    235 Impl::CrouzeixRaviartLocalCoefficients<dim> coefficients_;
    \n+
    236 Impl::CrouzeixRaviartLocalInterpolation<Impl::CrouzeixRaviartLocalBasis<D,R,dim> > interpolation_;
    \n+
    237 };
    \n+
    \n+
    238
    \n+
    239} // namespace Dune
    \n+
    240
    \n+
    241#endif // DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_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+
    D DomainType
    domain type
    Definition common/localbasis.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+
    Crouzeix-Raviart finite element.
    Definition crouzeixraviart.hh:191
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition crouzeixraviart.hh:228
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition crouzeixraviart.hh:208
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition crouzeixraviart.hh:215
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition crouzeixraviart.hh:201
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition crouzeixraviart.hh:221
    \n+\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,248 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_CROUZEIXRAVIART_HH\n+6#define DUNE_LOCALFUNCTIONS_CROUZEIXRAVIART_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-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+8#include \n+9#include \n+10\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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+30 template\n+31 class CrouzeixRaviartLocalBasis\n+32 {\n+33 public:\n+34 using Traits =\n+LocalBasisTraits,R,1,FieldVector,FieldMatrix\n+>;\n+35\n+38 static constexpr unsigned int size ()\n+39 {\n+40 return dim+1;\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+44 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n+45 std::vector& out) const\n+46 {\n+47 out.resize(size());\n+48\n+49 std::fill(out.begin(), out.end()-1, 1.0);\n+50 out.back() = 1.0-dim;\n+51\n+52 for (unsigned int i=0; i& out) const\n+66 {\n+67 out.resize(size());\n+68\n+69 for (unsigned i=0; i& order,\n+83 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+84 std::vector& out) const\n+85 {\n+86 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+87\n+88 out.resize(size());\n+89\n+90 if (totalOrder == 0) {\n+91 evaluateFunction(in, out);\n+92 return;\n+93 }\n+94\n+95 if (totalOrder==1)\n+96 {\n+97 auto direction = std::find(order.begin(), order.end(), 1)-order.begin();\n+98\n+99 for (unsigned int i=0; i\n+120 class CrouzeixRaviartLocalCoefficients\n+121 {\n+122 public:\n+124 CrouzeixRaviartLocalCoefficients ()\n+125 : localKeys_(size())\n+126 {\n+127 for (std::size_t i=0; i localKeys_;\n+145 };\n+146\n+151 template\n+152 class CrouzeixRaviartLocalInterpolation\n+153 {\n+154 public:\n+155\n+163 template\n+164 void interpolate (const F& ff, std::vector& out) const\n+165 {\n+166 constexpr auto dim = LocalBasis::Traits::dimDomain;\n+167\n+168 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+169\n+170 out.resize(LocalBasis::size());\n+171\n+172 // Evaluate at the facet midpoints\n+173 auto refSimplex = ReferenceElements::simplex();\n+174 for (int i=0; i(i).center());\n+176 }\n+177 };\n+178\n+179} } // namespace Dune::Impl\n+180\n+181namespace _\bD_\bu_\bn_\be\n+182{\n+189 template\n+_\b1_\b9_\b0 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+191 {\n+192 public:\n+_\b1_\b9_\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+_\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+196 Impl::CrouzeixRaviartLocalCoefficients,\n+197 Impl::CrouzeixRaviartLocalInterpolation > >;\n+198\n+_\b2_\b0_\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+202 {\n+203 return basis_;\n+204 }\n+205\n+_\b2_\b0_\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+209 {\n+210 return coefficients_;\n+211 }\n+212\n+_\b2_\b1_\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+216 {\n+217 return interpolation_;\n+218 }\n+219\n+_\b2_\b2_\b1 static constexpr std::size_t _\bs_\bi_\bz_\be()\n+222 {\n+223 return dim+1;\n+224 }\n+225\n+_\b2_\b2_\b8 static constexpr GeometryType _\bt_\by_\bp_\be()\n+229 {\n+230 return GeometryTypes::simplex(dim);\n+231 }\n+232\n+233 private:\n+234 Impl::CrouzeixRaviartLocalBasis basis_;\n+235 Impl::CrouzeixRaviartLocalCoefficients coefficients_;\n+236 Impl::CrouzeixRaviartLocalInterpolation > interpolation_;\n+237 };\n+238\n+239} // namespace Dune\n+240\n+241#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:_\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-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+_\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: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:_\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:191\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:228\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:208\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:215\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:201\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:221\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 ===============================================================================\n 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: monomial.hh File Reference\n+dune-localfunctions: rannacherturek2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,45 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    monomial.hh File Reference
    \n+
    rannacherturek2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <cstddef>
    \n-#include <cstdlib>
    \n-#include <memory>
    \n+
    #include <numeric>
    \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+#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+\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...
    struct  Dune::RannacherTurek2DLocalBasis< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+rannacherturek2dlocalbasis.hh File Reference\n+#include \n #include \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 \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:_\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+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/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: monomial.hh Source File\n+dune-localfunctions: rannacherturek2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,223 +70,159 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    monomial.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 (C) 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+
    5#ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_2D_LOCALBASIS_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+
    19 template< class D, class R >
    \n+
    \n+\n+
    21 {
    \n+\n+
    23 R, 1, FieldVector< R, 1 >,
    \n+
    24 FieldMatrix< R, 1, 2 > > Traits;
    \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+
    \n+
    27 unsigned int size () const
    \n+
    28 {
    \n+
    29 return 4;
    \n+
    30 }
    \n+
    \n+
    31
    \n+
    \n+
    33 inline void evaluateFunction ( const typename Traits::DomainType &in,
    \n+
    34 std::vector< typename Traits::RangeType > &out ) const
    \n+
    35 {
    \n+
    36 out.resize(4);
    \n+
    37 typename Traits::DomainFieldType qbase = in[0]*in[0]-in[1]*in[1];
    \n+
    38 out[0] = .75 - 2*in[0] + in[1] + qbase;
    \n+
    39 out[1] = -.25 + in[1] + qbase;
    \n+
    40 out[2] = .75 + in[0] - 2*in[1] - qbase;
    \n+
    41 out[3] = -.25 + in[0] - qbase;
    \n+
    42 }
    \n+
    \n
    43
    \n-
    44 public:
    \n-\n-\n-\n-\n-\n+
    \n+
    45 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n+
    46 std::vector< typename Traits::JacobianType > &out ) const
    \n+
    47 {
    \n+
    48 out.resize(4);
    \n+
    49
    \n+
    50 // see http://www.dune-project.org/doc/doxygen/html/classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea
    \n+
    51 // 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
    52
    \n-
    \n-
    54 MonomialLocalFiniteElement (const GeometryType &gt_)
    \n-
    55 : basis(), interpolation(gt_, basis), gt(gt_)
    \n-
    56 {}
    \n+
    53 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];
    \n+
    54 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];
    \n+
    55 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];
    \n+
    56 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];
    \n+
    57 }
    \n
    \n-
    57
    \n+
    58
    \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+
    60 void partial (const std::array<unsigned int, 2>& order,
    \n+
    61 const typename Traits::DomainType& in, // position
    \n+
    62 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    63 {
    \n+
    64 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    65 if (totalOrder == 0) {
    \n+
    66 evaluateFunction(in, out);
    \n+
    67 } else if (totalOrder == 1) {
    \n+
    68 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    69 out.resize(size());
    \n+
    70
    \n+
    71 switch (direction) {
    \n+
    72 case 0:
    \n+
    73 out[0] = -2 + 2*in[0];
    \n+
    74 out[1] = 2*in[0];
    \n+
    75 out[2] = 1 - 2*in[0];
    \n+
    76 out[3] = 1 - 2*in[0];
    \n+
    77 break;
    \n+
    78 case 1:
    \n+
    79 out[0] = 1 - 2*in[1];
    \n+
    80 out[1] = 1 - 2*in[1];
    \n+
    81 out[2] = -2 + 2*in[1];
    \n+
    82 out[3] = 2*in[1];
    \n+
    83 break;
    \n+
    84 default:
    \n+
    85 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    86 }
    \n+
    87 } else if (totalOrder == 2) {
    \n+
    88 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 2));
    \n+
    89 out.resize(size());
    \n+
    90
    \n+
    91 switch (direction) {
    \n+
    92 case 0:
    \n+
    93 out[0] = out[1] = 2;
    \n+
    94 out[2] = out[3] =-2;
    \n+
    95 break;
    \n+
    96 case 1:
    \n+
    97 out[0] = out[1] =-2;
    \n+
    98 out[2] = out[3] = 2;
    \n+
    99 break;
    \n+
    100 default:
    \n+
    101 out[0] = out[1] = out[2] = out[3] = 0;
    \n+
    102 break;
    \n+
    103 }
    \n+
    104 } else {
    \n+
    105 out[0] = out[1] = out[2] = out[3] = 0;
    \n+
    106 }
    \n+
    107 }
    \n+
    \n+
    108
    \n+
    \n+
    110 unsigned int order () const
    \n+
    111 {
    \n+
    112 // must be 2 here since it contains x^2 and x^2
    \n+
    113 return 2;
    \n+
    114 }
    \n+
    \n+
    115 };
    \n+
    \n
    116
    \n-\n+
    117} //namespace Dune
    \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+
    119#endif // #ifndef DUNE_RANNACHER_TUREK_2D_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-
    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-
    Constant shape function.
    Definition monomiallocalbasis.hh:201
    \n-
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:216
    \n-
    Layout map for monomial finite elements.
    Definition monomiallocalcoefficients.hh:24
    \n-
    Definition monomiallocalinterpolation.hh:22
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:36
    \n+
    Definition rannacherturek2dlocalbasis.hh:21
    \n+
    LocalBasisTraits< D, 2, FieldVector< D, 2 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 2 > > Traits
    Definition rannacherturek2dlocalbasis.hh:24
    \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:60
    \n+
    unsigned int size() const
    number of shape functions
    Definition rannacherturek2dlocalbasis.hh:27
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek2dlocalbasis.hh:33
    \n+
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek2dlocalbasis.hh:110
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek2dlocalbasis.hh:45
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,248 +1,174 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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 (C) 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+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\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+19 template< class D, class R >\n+_\b2_\b0 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+21 {\n+22 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+23 R, 1, FieldVector< R, 1 >,\n+_\b2_\b4 FieldMatrix< R, 1, 2 > > _\bT_\br_\ba_\bi_\bt_\bs;\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+_\b2_\b7 unsigned int _\bs_\bi_\bz_\be () const\n+28 {\n+29 return 4;\n+30 }\n+31\n+_\b3_\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+34 std::vector< typename Traits::RangeType > &out ) const\n+35 {\n+36 out.resize(4);\n+37 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+38 out[0] = .75 - 2*in[0] + in[1] + qbase;\n+39 out[1] = -.25 + in[1] + qbase;\n+40 out[2] = .75 + in[0] - 2*in[1] - qbase;\n+41 out[3] = -.25 + in[0] - qbase;\n+42 }\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+_\b4_\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+46 std::vector< typename Traits::JacobianType > &out ) const\n+47 {\n+48 out.resize(4);\n+49\n+50 // see http://www.dune-project.org/doc/doxygen/html/\n+classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea\n+51 // 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 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+53 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];\n+54 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];\n+55 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];\n+56 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];\n+57 }\n+58\n+_\b6_\b0 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+61 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 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+65 if (totalOrder == 0) {\n+66 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+67 } else if (totalOrder == 1) {\n+68 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+69 out.resize(_\bs_\bi_\bz_\be());\n+70\n+71 switch (direction) {\n+72 case 0:\n+73 out[0] = -2 + 2*in[0];\n+74 out[1] = 2*in[0];\n+75 out[2] = 1 - 2*in[0];\n+76 out[3] = 1 - 2*in[0];\n+77 break;\n+78 case 1:\n+79 out[0] = 1 - 2*in[1];\n+80 out[1] = 1 - 2*in[1];\n+81 out[2] = -2 + 2*in[1];\n+82 out[3] = 2*in[1];\n+83 break;\n+84 default:\n+85 DUNE_THROW(RangeError, \"Component out of range.\");\n+86 }\n+87 } else if (totalOrder == 2) {\n+88 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+89 out.resize(_\bs_\bi_\bz_\be());\n+90\n+91 switch (direction) {\n+92 case 0:\n+93 out[0] = out[1] = 2;\n+94 out[2] = out[3] =-2;\n+95 break;\n+96 case 1:\n+97 out[0] = out[1] =-2;\n+98 out[2] = out[3] = 2;\n+99 break;\n+100 default:\n+101 out[0] = out[1] = out[2] = out[3] = 0;\n+102 break;\n+103 }\n+104 } else {\n+105 out[0] = out[1] = out[2] = out[3] = 0;\n+106 }\n+107 }\n+108\n+_\b1_\b1_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n+111 {\n+112 // must be 2 here since it contains x^2 and x^2\n+113 return 2;\n+114 }\n+115 };\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+117} //namespace Dune\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-_\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_\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_\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+119#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_\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+_\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:34\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:42\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: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\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:21\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: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:_\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:60\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 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-Constant shape function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:201\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:216\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-Layout map for monomial finite elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.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\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.hh:22\n+number of shape functions\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:_\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:33\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:110\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:45\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/a00056.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelec1stkindcube.hh File Reference\n+dune-localfunctions: rannacherturek3dlocalbasis.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-
    nedelec1stkindcube.hh File Reference
    \n+
    rannacherturek3dlocalbasis.hh File Reference
    \n
    \n
    \n
    #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n+#include <vector>
    \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/common/fmatrix.hh>
    \n #include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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::Nedelec1stKindCubeLocalFiniteElement< D, R, dim, k >
     N\u00e9d\u00e9lec elements of the first kind for cube elements. More...
    class  Dune::RannacherTurek3DLocalBasis< D, R >
     
    \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,29 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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-nedelec1stkindcube.hh File Reference\n+rannacherturek3dlocalbasis.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_\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_\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:_\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_\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/a00056_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00056_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: rannacherturek3dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,521 +70,167 @@\n
    \n \n \n \n \n \n \n
    \n-
    nedelec1stkindcube.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 (C) 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_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n
    7
    \n
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n+
    9#include <vector>
    \n+
    10
    \n
    11#include <dune/common/fvector.hh>
    \n-
    12#include <dune/common/math.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n
    13
    \n-
    14#include <dune/geometry/referenceelements.hh>
    \n-
    15#include <dune/geometry/type.hh>
    \n-
    16
    \n-\n-\n-
    19#include <dune/localfunctions/common/localinterpolation.hh> // For deprecated makeFunctionWithCallOperator
    \n-\n-
    21
    \n-
    22namespace Dune
    \n-
    23{
    \n-
    24namespace Impl
    \n-
    25{
    \n-
    36 template<class D, class R, int dim, int k>
    \n-
    37 class Nedelec1stKindCubeLocalBasis
    \n-
    38 {
    \n-
    39 // Number of edges of the reference cube
    \n-
    40 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \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 Nedelec1stKindCubeLocalBasis()
    \n-
    54 {
    \n-
    55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n-
    56 }
    \n-
    57
    \n-
    60 Nedelec1stKindCubeLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n-
    61 : Nedelec1stKindCubeLocalBasis()
    \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 cubes.");
    \n-
    71 if (dim==2)
    \n-
    72 return 2*k * (k+1);
    \n-
    73 if (dim==3)
    \n-
    74 return 3*k * (k+1) * (k+1);
    \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+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18
    \n+
    19 template< class D, class R >
    \n+
    \n+\n+
    21 {
    \n+
    22 static const int coefficients[ 6 ][ 6 ];
    \n+
    23
    \n+
    24 public:
    \n+\n+
    26 R, 1, FieldVector< R, 1 >,
    \n+
    27 FieldMatrix< R, 1, 3 > > Traits;
    \n+
    28
    \n+
    \n+
    30 unsigned int size () const
    \n+
    31 {
    \n+
    32 return 6;
    \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 typedef typename Traits::RangeFieldType RangeFieldType;
    \n+
    40 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],
    \n+
    41 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],
    \n+
    42 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };
    \n+
    43 out.resize( size() );
    \n+
    44 for( unsigned int i = 0; i < size(); ++i )
    \n+
    45 {
    \n+
    46 out[ i ] = RangeFieldType( 0 );
    \n+
    47 for( unsigned int j = 0; j < 6; ++j )
    \n+
    48 out[ i ] += coefficients[ i ][ j ]*y[ j ];
    \n+
    49 out[ i ] /= RangeFieldType( 3 );
    \n+
    50 }
    \n+
    51 }
    \n+
    \n+
    52
    \n+
    \n+
    54 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n+
    55 std::vector< typename Traits::JacobianType > &out ) const
    \n+
    56 {
    \n+
    57 typedef typename Traits::RangeFieldType RangeFieldType;
    \n+
    58 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };
    \n+
    59 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };
    \n+
    60 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };
    \n+
    61
    \n+
    62 out.resize( size() );
    \n+
    63 for( unsigned int i = 0; i < size(); ++i )
    \n+
    64 {
    \n+
    65 out[ i ] = RangeFieldType( 0 );
    \n+
    66 for( unsigned int j = 0; j < 5; ++j )
    \n+
    67 {
    \n+
    68 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];
    \n+
    69 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];
    \n+
    70 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];
    \n+
    71 }
    \n+
    72 out[ i ] /= RangeFieldType( 3 );
    \n+
    73 }
    \n+
    74 }
    \n+
    \n+
    75
    \n+
    \n+
    77 void partial (const std::array<unsigned int, 3>& order,
    \n+
    78 const typename Traits::DomainType& in, // position
    \n+
    79 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    80 {
    \n+
    81 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    82 if (totalOrder == 0) {
    \n+
    83 evaluateFunction(in, out);
    \n+
    84 } else if (totalOrder == 1) {
    \n+
    85 out.resize(size());
    \n+
    86 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n
    87
    \n-
    88 if (dim==2)
    \n-
    89 {
    \n-
    90 // First-order N\u00e9d\u00e9lec shape functions on a square are of the form
    \n-
    91 //
    \n-
    92 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R
    \n-
    93 //
    \n-
    94 // The following coefficients create the four basis vectors
    \n-
    95 // that are dual to the edge degrees of freedom:
    \n-
    96 //
    \n-
    97 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1
    \n-
    98 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1
    \n-
    99 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1
    \n-
    100 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1
    \n-
    101
    \n-
    102 out[0] = { 0, D(1) - in[0]};
    \n-
    103 out[1] = { 0, in[0]};
    \n-
    104 out[2] = { D(1) - in[1], 0};
    \n-
    105 out[3] = { in[1], 0};
    \n-
    106 }
    \n-
    107
    \n-
    108 if constexpr (dim==3)
    \n-
    109 {
    \n-
    110 // First-order N\u00e9d\u00e9lec shape functions on a cube are of the form
    \n-
    111 //
    \n-
    112 // (e1 yz)
    \n-
    113 // 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-
    114 // (e3 xy)
    \n-
    115 //
    \n-
    116 // The following coefficients create the twelve basis vectors
    \n-
    117 // that are dual to the edge degrees of freedom:
    \n-
    118 //
    \n-
    119 // 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-
    120 // 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-
    121 // 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-
    122 // 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-
    123 //
    \n-
    124 // The following implementation uses these values, and simply
    \n-
    125 // skips all the zeros.
    \n+
    88 using RangeFieldType = typename Traits::RangeFieldType;
    \n+
    89 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },
    \n+
    90 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },
    \n+
    91 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };
    \n+
    92
    \n+
    93 for (std::size_t i = 0; i < size(); ++i) {
    \n+
    94 out[i] = RangeFieldType{0};
    \n+
    95 for (std::size_t j = 0; j < 5; ++j)
    \n+
    96 out[i] += coefficients[i][j+1] * y[direction][j];
    \n+
    97 out[i] /= RangeFieldType{3};
    \n+
    98 }
    \n+
    99 } else {
    \n+
    100 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    101 }
    \n+
    102 }
    \n+
    \n+
    103
    \n+
    \n+
    105 unsigned int order () const
    \n+
    106 {
    \n+
    107 return 2;
    \n+
    108 }
    \n+
    \n+
    109 };
    \n+
    \n+
    110
    \n+
    111
    \n+
    112
    \n+
    113 // RannacherTurek3DLocalBasis::coefficients
    \n+
    114 // ----------------------------------------
    \n+
    115
    \n+
    116 template< class D, class R >
    \n+
    117 const int RannacherTurek3DLocalBasis< D, R >
    \n+
    118 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },
    \n+
    119 { -1, -1, 2, 2, 4, 2 },
    \n+
    120 { 2, 2, -7, 2, -2, 2 },
    \n+
    121 { -1, 2, -1, 2, -2, 2 },
    \n+
    122 { 2, 2, 2, -7, -2, -4 },
    \n+
    123 { -1, 2, 2, -1, -2, -4 }};
    \n+
    124
    \n+
    125} //namespace Dune
    \n
    126
    \n-
    127 for (std::size_t i=0; i<out.size(); i++)
    \n-
    128 out[i] = {0,0,0};
    \n-
    129
    \n-
    130 out[0][2] = { 1 - in[0] - in[1] + in[0]*in[1]};
    \n-
    131 out[1][2] = { in[0] - in[0]*in[1]};
    \n-
    132 out[2][2] = { in[1] - in[0]*in[1]};
    \n-
    133 out[3][2] = { in[0]*in[1]};
    \n-
    134
    \n-
    135 out[4][1] = { 1 - in[0] - in[2] + in[0]*in[2]};
    \n-
    136 out[5][1] = { in[0] - in[0]*in[2]};
    \n-
    137 out[8][1] = { in[2] - in[0]*in[2]};
    \n-
    138 out[9][1] = { in[0]*in[2]};
    \n-
    139
    \n-
    140 out[6][0] = { 1 - in[1] - in[2] + in[1]*in[2]};
    \n-
    141 out[7][0] = { in[1] - in[1]*in[2]};
    \n-
    142 out[10][0] = { in[2] - in[1]*in[2]};
    \n-
    143 out[11][0] = { in[1]*in[2]};
    \n-
    144 }
    \n-
    145
    \n-
    146 for (std::size_t i=0; i<out.size(); i++)
    \n-
    147 out[i] *= edgeOrientation_[i];
    \n-
    148 }
    \n-
    149
    \n-
    155 void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    156 std::vector<typename Traits::JacobianType>& out) const
    \n-
    157 {
    \n-
    158 out.resize(size());
    \n-
    159 if (dim==2)
    \n-
    160 {
    \n-
    161 for (std::size_t i=0; i<out.size(); i++)
    \n-
    162 for (std::size_t j=0; j<dim; j++)
    \n-
    163 out[i][j] = { 0, 0};
    \n-
    164
    \n-
    165 out[0][1] = { -1, 0};
    \n-
    166 out[1][1] = { 1, 0};
    \n-
    167
    \n-
    168 out[2][0] = { 0, -1};
    \n-
    169 out[3][0] = { 0, 1};
    \n-
    170 }
    \n-
    171 if (dim==3)
    \n-
    172 {
    \n-
    173 for (std::size_t i=0; i<out.size(); i++)
    \n-
    174 for(std::size_t j=0;j<dim; j++)
    \n-
    175 out[i][j] = {0,0,0};
    \n-
    176
    \n-
    177
    \n-
    178 out[0][2] = {-1 +in[1], -1 + in[0], 0};
    \n-
    179 out[1][2] = { 1 -in[1], - in[0], 0};
    \n-
    180 out[2][2] = { -in[1], 1 - in[0], 0};
    \n-
    181 out[3][2] = { in[1], in[0], 0};
    \n-
    182
    \n-
    183 out[4][1] = {-1 +in[2], 0, -1 + in[0]};
    \n-
    184 out[5][1] = { 1 -in[2], 0, - in[0]};
    \n-
    185 out[8][1] = { -in[2], 0, 1 - in[0]};
    \n-
    186 out[9][1] = { in[2], 0, in[0]};
    \n-
    187
    \n-
    188 out[6][0] = { 0, -1 + in[2], -1 + in[1]};
    \n-
    189 out[7][0] = { 0, 1 - in[2], - in[1]};
    \n-
    190 out[10][0] = { 0, - in[2], 1 - in[1]};
    \n-
    191 out[11][0] = { 0, in[2], in[1]};
    \n-
    192
    \n-
    193 }
    \n-
    194
    \n-
    195 for (std::size_t i=0; i<out.size(); i++)
    \n-
    196 out[i] *= edgeOrientation_[i];
    \n-
    197
    \n-
    198 }
    \n-
    199
    \n-
    206 void partial(const std::array<unsigned int, dim>& order,
    \n-
    207 const typename Traits::DomainType& in,
    \n-
    208 std::vector<typename Traits::RangeType>& out) const
    \n-
    209 {
    \n-
    210 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    211 if (totalOrder == 0) {
    \n-
    212 evaluateFunction(in, out);
    \n-
    213 } else if (totalOrder == 1) {
    \n-
    214 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    215 out.resize(size());
    \n-
    216
    \n-
    217 if (dim==2)
    \n-
    218 {
    \n-
    219 if (direction==0)
    \n-
    220 {
    \n-
    221 out[0] = { 0, -1};
    \n-
    222 out[1] = { 0, 1};
    \n-
    223 out[2] = { 0, 0};
    \n-
    224 out[3] = { 0, 0};
    \n-
    225 }
    \n-
    226 else
    \n-
    227 {
    \n-
    228 out[0] = { 0, 0};
    \n-
    229 out[1] = { 0, 0};
    \n-
    230 out[2] = { -1, 0};
    \n-
    231 out[3] = { 1, 0};
    \n-
    232 }
    \n-
    233 }
    \n-
    234
    \n-
    235 if (dim==3)
    \n-
    236 {
    \n-
    237 switch (direction)
    \n-
    238 {
    \n-
    239 case 0:
    \n-
    240 out[0] = { 0, 0, -1 +in[1]};
    \n-
    241 out[1] = { 0, 0, 1 -in[1]};
    \n-
    242 out[2] = { 0, 0, -in[1]};
    \n-
    243 out[3] = { 0, 0, in[1]};
    \n-
    244
    \n-
    245 out[4] = { 0, -1 +in[2], 0};
    \n-
    246 out[5] = { 0, 1 -in[2], 0};
    \n-
    247 out[8] = { 0, -in[2], 0};
    \n-
    248 out[9] = { 0, in[2], 0};
    \n-
    249
    \n-
    250 out[6] = {0,0,0};
    \n-
    251 out[7] = {0,0,0};
    \n-
    252 out[10] = {0,0,0};
    \n-
    253 out[11] = {0,0,0};
    \n-
    254 break;
    \n-
    255
    \n-
    256 case 1:
    \n-
    257 out[0] = { 0, 0, -1 + in[0]};
    \n-
    258 out[1] = { 0, 0, - in[0]};
    \n-
    259 out[2] = { 0, 0, 1 - in[0]};
    \n-
    260 out[3] = { 0, 0, in[0]};
    \n-
    261
    \n-
    262 out[4] = {0,0,0};
    \n-
    263 out[5] = {0,0,0};
    \n-
    264 out[8] = {0,0,0};
    \n-
    265 out[9] = {0,0,0};
    \n-
    266
    \n-
    267 out[6] = { -1 + in[2], 0, 0};
    \n-
    268 out[7] = { 1 - in[2], 0, 0};
    \n-
    269 out[10] = { - in[2], 0, 0};
    \n-
    270 out[11] = { in[2], 0, 0};
    \n-
    271 break;
    \n-
    272
    \n-
    273 case 2:
    \n-
    274 out[0] = {0,0,0};
    \n-
    275 out[1] = {0,0,0};
    \n-
    276 out[2] = {0,0,0};
    \n-
    277 out[3] = {0,0,0};
    \n-
    278
    \n-
    279 out[4] = { 0, -1 + in[0], 0};
    \n-
    280 out[5] = { 0, - in[0], 0};
    \n-
    281 out[8] = { 0, 1 - in[0], 0};
    \n-
    282 out[9] = { 0, in[0], 0};
    \n-
    283
    \n-
    284 out[6] = { -1 + in[1], 0, 0};
    \n-
    285 out[7] = { - in[1], 0, 0};
    \n-
    286 out[10] = { 1 - in[1], 0, 0};
    \n-
    287 out[11] = { in[1], 0, 0};
    \n-
    288 break;
    \n-
    289 }
    \n-
    290 }
    \n-
    291
    \n-
    292 for (std::size_t i=0; i<out.size(); i++)
    \n-
    293 out[i] *= edgeOrientation_[i];
    \n-
    294
    \n-
    295 } else if (totalOrder == 2) {
    \n-
    296 out.resize(size());
    \n-
    297
    \n-
    298 if (dim==2)
    \n-
    299 for (std::size_t i = 0; i < size(); ++i)
    \n-
    300 for (std::size_t j = 0; j < dim; ++j)
    \n-
    301 out[i][j] = 0;
    \n-
    302
    \n-
    303 if (dim==3)
    \n-
    304 {
    \n-
    305 for(size_t i=0; i<out.size(); i++)
    \n-
    306 out[i] = { 0, 0, 0};
    \n-
    307
    \n-
    308 //case (1,1,0):
    \n-
    309 if( order[0] == 1 and order[1]==1)
    \n-
    310 {
    \n-
    311 out[0] = { 0, 0, 1};
    \n-
    312 out[1] = { 0, 0, -1};
    \n-
    313 out[2] = { 0, 0, -1};
    \n-
    314 out[3] = { 0, 0, 1};
    \n-
    315 }
    \n-
    316
    \n-
    317 //case (1,0,1):
    \n-
    318 if( order[0] == 1 and order[2]==1)
    \n-
    319 {
    \n-
    320 out[4] = { 0, 1, 0};
    \n-
    321 out[5] = { 0, -1, 0};
    \n-
    322 out[8] = { 0, -1, 0};
    \n-
    323 out[9] = { 0, 1, 0};
    \n-
    324 }
    \n-
    325
    \n-
    326 //case (0,1,1):
    \n-
    327 if( order[1] == 1 and order[2]==1)
    \n-
    328 {
    \n-
    329 out[6] = { 1, 0, 0};
    \n-
    330 out[7] = { -1, 0, 0};
    \n-
    331 out[10] = { -1, 0, 0};
    \n-
    332 out[11] = { 1, 0, 0};
    \n-
    333 }
    \n-
    334
    \n-
    335 for (std::size_t i=0; i<out.size(); i++)
    \n-
    336 out[i] *= edgeOrientation_[i];
    \n-
    337 }
    \n-
    338
    \n-
    339
    \n-
    340 }else {
    \n-
    341 out.resize(size());
    \n-
    342 for (std::size_t i = 0; i < size(); ++i)
    \n-
    343 for (std::size_t j = 0; j < dim; ++j)
    \n-
    344 out[i][j] = 0;
    \n-
    345 }
    \n-
    346
    \n-
    347 }
    \n-
    348
    \n-
    350 unsigned int order() const
    \n-
    351 {
    \n-
    352 if (dim==2)
    \n-
    353 return 2*k-1;
    \n-
    354 if (dim==3)
    \n-
    355 return 3*k-1;
    \n-
    356 }
    \n-
    357
    \n-
    358 private:
    \n-
    359
    \n-
    360 // Orientations of the cube edges
    \n-
    361 std::array<R,numberOfEdges> edgeOrientation_;
    \n-
    362 };
    \n-
    363
    \n-
    364
    \n-
    369 template <int dim, int k>
    \n-
    370 class Nedelec1stKindCubeLocalCoefficients
    \n-
    371 {
    \n-
    372 public:
    \n-
    374 Nedelec1stKindCubeLocalCoefficients ()
    \n-
    375 : localKey_(size())
    \n-
    376 {
    \n-
    377 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n-
    378 // Assign all degrees of freedom to edges
    \n-
    379 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n-
    380 for (std::size_t i=0; i<size(); i++)
    \n-
    381 localKey_[i] = LocalKey(i,dim-1,0);
    \n-
    382 }
    \n-
    383
    \n-
    385 std::size_t size() const
    \n-
    386 {
    \n-
    387 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d cubes.");
    \n-
    388 return (dim==2) ? 2*k * (k+1)
    \n-
    389 : 3*k * (k+1) * (k+1);
    \n-
    390 }
    \n-
    391
    \n-
    394 const LocalKey& localKey (std::size_t i) const
    \n-
    395 {
    \n-
    396 return localKey_[i];
    \n-
    397 }
    \n-
    398
    \n-
    399 private:
    \n-
    400 std::vector<LocalKey> localKey_;
    \n-
    401 };
    \n-
    402
    \n-
    407 template<class LB>
    \n-
    408 class Nedelec1stKindCubeLocalInterpolation
    \n-
    409 {
    \n-
    410 static constexpr auto dim = LB::Traits::dimDomain;
    \n-
    411 static constexpr auto size = LB::size();
    \n-
    412
    \n-
    413 // Number of edges of the reference cube
    \n-
    414 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \n-
    415
    \n-
    416 public:
    \n-
    417
    \n-
    419 Nedelec1stKindCubeLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n-
    420 {
    \n-
    421 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::cube(dim));
    \n-
    422
    \n-
    423 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    424 m_[i] = refElement.position(i,dim-1);
    \n-
    425
    \n-
    426 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    427 {
    \n-
    428 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n-
    429 auto v0 = *vertexIterator;
    \n-
    430 auto v1 = *(++vertexIterator);
    \n-
    431
    \n-
    432 // By default, edges point from the vertex with the smaller index
    \n-
    433 // to the vertex with the larger index.
    \n-
    434 if (v0>v1)
    \n-
    435 std::swap(v0,v1);
    \n-
    436 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n-
    437 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n-
    438 }
    \n-
    439 }
    \n-
    440
    \n-
    446 template<typename F, typename C>
    \n-
    447 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    448 {
    \n-
    449 out.resize(size);
    \n-
    450 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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+
    127#endif // #ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.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-
    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+
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:45
    \n+
    Definition rannacherturek3dlocalbasis.hh:21
    \n+
    LocalBasisTraits< D, 3, FieldVector< D, 3 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 3 > > Traits
    Definition rannacherturek3dlocalbasis.hh:27
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek3dlocalbasis.hh:36
    \n+
    unsigned int size() const
    number of shape functions
    Definition rannacherturek3dlocalbasis.hh:30
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek3dlocalbasis.hh:54
    \n+
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek3dlocalbasis.hh:105
    \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:77
    \n \n-\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,545 +1,179 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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 (C) 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_RANNACHER_TUREK_3D_LOCALBASIS_HH\n+6#define DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\n 7\n 8#include \n-9\n-10#include \n+9#include \n+10\n 11#include \n-12#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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh> // For deprecated\n-makeFunctionWithCallOperator\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-24namespace Impl\n-25{\n-36 template\n-37 class Nedelec1stKindCubeLocalBasis\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+19 template< class D, class R >\n+_\b2_\b0 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+21 {\n+22 static const int coefficients[ 6 ][ 6 ];\n+23\n+24 public:\n+25 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+26 R, 1, FieldVector< R, 1 >,\n+_\b2_\b7 FieldMatrix< R, 1, 3 > > _\bT_\br_\ba_\bi_\bt_\bs;\n+28\n+_\b3_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+31 {\n+32 return 6;\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 // Number of edges of the reference cube\n-40 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n-41\n-42 public:\n-43 using Traits = LocalBasisTraits,\n-44 R,dim,FieldVector,\n-45 FieldMatrix >;\n-46\n-53 Nedelec1stKindCubeLocalBasis()\n-54 {\n-55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\n-56 }\n-57\n-60 Nedelec1stKindCubeLocalBasis(std::bitset edgeOrientation)\n-61 : Nedelec1stKindCubeLocalBasis()\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+39 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+40 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],\n+41 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],\n+42 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };\n+43 out.resize( _\bs_\bi_\bz_\be() );\n+44 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n+45 {\n+46 out[ i ] = RangeFieldType( 0 );\n+47 for( unsigned int j = 0; j < 6; ++j )\n+48 out[ i ] += coefficients[ i ][ j ]*y[ j ];\n+49 out[ i ] /= RangeFieldType( 3 );\n+50 }\n+51 }\n+52\n+_\b5_\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+55 std::vector< typename Traits::JacobianType > &out ) const\n+56 {\n+57 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+58 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };\n+59 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };\n+60 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };\n+61\n+62 out.resize( _\bs_\bi_\bz_\be() );\n+63 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n+64 {\n+65 out[ i ] = RangeFieldType( 0 );\n+66 for( unsigned int j = 0; j < 5; ++j )\n+67 {\n+68 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];\n+69 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];\n+70 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];\n+71 }\n+72 out[ i ] /= RangeFieldType( 3 );\n+73 }\n+74 }\n+75\n+_\b7_\b7 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+78 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+79 std::vector& out) const // return value\n+80 {\n+81 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+82 if (totalOrder == 0) {\n+83 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+84 } else if (totalOrder == 1) {\n+85 out.resize(_\bs_\bi_\bz_\be());\n+86 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 87\n-88 if (dim==2)\n-89 {\n-90 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a square are of the form\n-91 //\n-92 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R\n-93 //\n-94 // The following coefficients create the four basis vectors\n-95 // that are dual to the edge degrees of freedom:\n-96 //\n-97 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1\n-98 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1\n-99 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1\n-100 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1\n-101\n-102 out[0] = { 0, D(1) - in[0]};\n-103 out[1] = { 0, in[0]};\n-104 out[2] = { D(1) - in[1], 0};\n-105 out[3] = { in[1], 0};\n-106 }\n-107\n-108 if constexpr (dim==3)\n-109 {\n-110 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a cube are of the form\n-111 //\n-112 // (e1 yz)\n-113 // 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-114 // (e3 xy)\n-115 //\n-116 // The following coefficients create the twelve basis vectors\n-117 // that are dual to the edge degrees of freedom:\n-118 //\n-119 // 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-120 // 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-121 // 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-122 // 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-123 //\n-124 // The following implementation uses these values, and simply\n-125 // skips all the zeros.\n+88 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+89 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },\n+90 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },\n+91 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };\n+92\n+93 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i) {\n+94 out[i] = RangeFieldType{0};\n+95 for (std::size_t j = 0; j < 5; ++j)\n+96 out[i] += coefficients[i][j+1] * y[direction][j];\n+97 out[i] /= RangeFieldType{3};\n+98 }\n+99 } else {\n+100 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+101 }\n+102 }\n+103\n+_\b1_\b0_\b5 unsigned int _\bo_\br_\bd_\be_\br () const\n+106 {\n+107 return 2;\n+108 }\n+109 };\n+110\n+111\n+112\n+113 // RannacherTurek3DLocalBasis::coefficients\n+114 // ----------------------------------------\n+115\n+116 template< class D, class R >\n+117 const int RannacherTurek3DLocalBasis< D, R >\n+118 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },\n+119 { -1, -1, 2, 2, 4, 2 },\n+120 { 2, 2, -7, 2, -2, 2 },\n+121 { -1, 2, -1, 2, -2, 2 },\n+122 { 2, 2, 2, -7, -2, -4 },\n+123 { -1, 2, 2, -1, -2, -4 }};\n+124\n+125} //namespace Dune\n 126\n-127 for (std::size_t i=0; i& out) const\n-157 {\n-158 out.resize(size());\n-159 if (dim==2)\n-160 {\n-161 for (std::size_t i=0; i& order,\n-207 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-208 std::vector& out) const\n-209 {\n-210 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-211 if (totalOrder == 0) {\n-212 evaluateFunction(in, out);\n-213 } else if (totalOrder == 1) {\n-214 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-215 out.resize(size());\n-216\n-217 if (dim==2)\n-218 {\n-219 if (direction==0)\n-220 {\n-221 out[0] = { 0, -1};\n-222 out[1] = { 0, 1};\n-223 out[2] = { 0, 0};\n-224 out[3] = { 0, 0};\n-225 }\n-226 else\n-227 {\n-228 out[0] = { 0, 0};\n-229 out[1] = { 0, 0};\n-230 out[2] = { -1, 0};\n-231 out[3] = { 1, 0};\n-232 }\n-233 }\n-234\n-235 if (dim==3)\n-236 {\n-237 switch (direction)\n-238 {\n-239 case 0:\n-240 out[0] = { 0, 0, -1 +in[1]};\n-241 out[1] = { 0, 0, 1 -in[1]};\n-242 out[2] = { 0, 0, -in[1]};\n-243 out[3] = { 0, 0, in[1]};\n-244\n-245 out[4] = { 0, -1 +in[2], 0};\n-246 out[5] = { 0, 1 -in[2], 0};\n-247 out[8] = { 0, -in[2], 0};\n-248 out[9] = { 0, in[2], 0};\n-249\n-250 out[6] = {0,0,0};\n-251 out[7] = {0,0,0};\n-252 out[10] = {0,0,0};\n-253 out[11] = {0,0,0};\n-254 break;\n-255\n-256 case 1:\n-257 out[0] = { 0, 0, -1 + in[0]};\n-258 out[1] = { 0, 0, - in[0]};\n-259 out[2] = { 0, 0, 1 - in[0]};\n-260 out[3] = { 0, 0, in[0]};\n-261\n-262 out[4] = {0,0,0};\n-263 out[5] = {0,0,0};\n-264 out[8] = {0,0,0};\n-265 out[9] = {0,0,0};\n-266\n-267 out[6] = { -1 + in[2], 0, 0};\n-268 out[7] = { 1 - in[2], 0, 0};\n-269 out[10] = { - in[2], 0, 0};\n-270 out[11] = { in[2], 0, 0};\n-271 break;\n-272\n-273 case 2:\n-274 out[0] = {0,0,0};\n-275 out[1] = {0,0,0};\n-276 out[2] = {0,0,0};\n-277 out[3] = {0,0,0};\n-278\n-279 out[4] = { 0, -1 + in[0], 0};\n-280 out[5] = { 0, - in[0], 0};\n-281 out[8] = { 0, 1 - in[0], 0};\n-282 out[9] = { 0, in[0], 0};\n-283\n-284 out[6] = { -1 + in[1], 0, 0};\n-285 out[7] = { - in[1], 0, 0};\n-286 out[10] = { 1 - in[1], 0, 0};\n-287 out[11] = { in[1], 0, 0};\n-288 break;\n-289 }\n-290 }\n-291\n-292 for (std::size_t i=0; i edgeOrientation_;\n-362 };\n-363\n-364\n-369 template \n-370 class Nedelec1stKindCubeLocalCoefficients\n-371 {\n-372 public:\n-374 Nedelec1stKindCubeLocalCoefficients ()\n-375 : localKey_(size())\n-376 {\n-377 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n-implemented.\");\n-378 // Assign all degrees of freedom to edges\n-379 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n-380 for (std::size_t i=0; i localKey_;\n-401 };\n-402\n-407 template\n-408 class Nedelec1stKindCubeLocalInterpolation\n-409 {\n-410 static constexpr auto dim = LB::Traits::dimDomain;\n-411 static constexpr auto size = LB::size();\n-412\n-413 // Number of edges of the reference cube\n-414 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n-415\n-416 public:\n-417\n-419 Nedelec1stKindCubeLocalInterpolation (std::bitset s = 0)\n-420 {\n-421 auto refElement = Dune::referenceElement(GeometryTypes::cube\n-(dim));\n-422\n-423 for (std::size_t i=0; iv1)\n-435 std::swap(v0,v1);\n-436 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n-437 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n-438 }\n-439 }\n-440\n-446 template\n-447 void interpolate (const F& ff, std::vector& out) const\n-448 {\n-449 out.resize(size);\n-450 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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+127#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:34\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: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:_\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+_\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:45\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:21\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:27\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:36\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: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_\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:54\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:105\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:77\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 ===============================================================================\n 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/a00059.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexbasis.hh File Reference\n+dune-localfunctions: rannachertureklocalbasis.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-
    nedelecsimplexbasis.hh File Reference
    \n+
    rannachertureklocalbasis.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+\n

    Go to the source code of this file.

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

    \n Classes

    struct  Dune::NedelecBasisFactory< dim, SF, CF >
    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,24 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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-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+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-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+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/a00059_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00059_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: rannachertureklocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,73 +70,60 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelecsimplexbasis.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 (C) 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-
    18 /*
    \n-
    19 * `NedelecPreBasisFactory` provides a basis for the Nedelec function space.
    \n-
    20 * `NedelecL2InterpolationFactory` provides the linear functionals.
    \n-
    21 *
    \n-
    22 * `Defaultbasisfactory::create` first builds the function space and the linear functionals.
    \n-
    23 * Then the constructor of `BasisMatrix` gets called. There the matrix
    \n-
    24 *
    \n-
    25 * \\begin{equation}
    \n-
    26 * A_{i,j} := N_j(\\phi_i)
    \n-
    27 * \\end{equation}
    \n-
    28 *
    \n-
    29 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.
    \n-
    30 * Then the matrix gets inverted and is then used as a coefficent matrix for the standard monomial basis.
    \n-
    31 *
    \n-
    32 * For more details on the theory see the first chapter "Construction of Local Finite Element Spaces Using the Generic Reference Elements"
    \n-
    33 * of the book "Advances in Dune" by Dedner, Flemisch and Kl\u00f6fkorn published in 2012.
    \n-
    34 */
    \n+
    5#ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n+
    7
    \n+\n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    13
    \n+
    23 template< class D, class R, unsigned int d >
    \n+\n+
    25
    \n+
    26 template< class D, class R >
    \n+
    \n+
    27 struct RannacherTurekLocalBasis< D, R, 2 >
    \n+
    28 : public RannacherTurek2DLocalBasis< D, R >
    \n+
    29 {};
    \n+
    \n+
    30
    \n+
    31 template< class D, class R >
    \n+
    \n+
    32 struct RannacherTurekLocalBasis< D, R, 3 >
    \n+
    33 : public RannacherTurek3DLocalBasis< D, R >
    \n+
    34 {};
    \n+
    \n
    35
    \n-
    36 template< unsigned int dim, class SF, class CF >
    \n-
    \n-\n-
    38 : public DefaultBasisFactory< NedelecPreBasisFactory<dim,CF>,
    \n-
    39 NedelecL2InterpolationFactory<dim,CF>,
    \n-
    40 dim,dim,SF,CF >
    \n-
    41 {};
    \n-
    \n-
    42}
    \n-
    43
    \n-
    44#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n-\n-\n-\n+
    36} // namespace Dune
    \n+
    37
    \n+
    38#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition nedelecsimplexbasis.hh:41
    \n-
    Definition defaultbasisfactory.hh:38
    \n+
    Definition rannacherturek2dlocalbasis.hh:21
    \n+
    Definition rannacherturek3dlocalbasis.hh:21
    \n+
    Rannacher-Turek shape functions.
    Definition rannachertureklocalbasis.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,71 +1,52 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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 (C) 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-18 /*\n-19 * `NedelecPreBasisFactory` provides a basis for the Nedelec function space.\n-20 * `NedelecL2InterpolationFactory` provides the linear functionals.\n-21 *\n-22 * `Defaultbasisfactory::create` first builds the function space and the\n-linear functionals.\n-23 * Then the constructor of `BasisMatrix` gets called. There the matrix\n-24 *\n-25 * \\begin{equation}\n-26 * A_{i,j} := N_j(\\phi_i)\n-27 * \\end{equation}\n-28 *\n-29 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.\n-30 * Then the matrix gets inverted and is then used as a coefficent matrix for\n-the standard monomial basis.\n-31 *\n-32 * For more details on the theory see the first chapter \"Construction of\n-Local Finite Element Spaces Using the Generic Reference Elements\"\n-33 * of the book \"Advances in Dune\" by Dedner, Flemisch and Kl\u00c3\u00b6fkorn published\n-in 2012.\n-34 */\n+5#ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH\n+6#define DUNE_RANNACHER_TUREK_LOCALBASIS_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+23 template< class D, class R, unsigned int d >\n+_\b2_\b4 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+25\n+26 template< class D, class R >\n+_\b2_\b7 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+28 : 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+29 {};\n+30\n+31 template< class D, class R >\n+_\b3_\b2 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+33 : 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+34 {};\n 35\n-36 template< unsigned int dim, class SF, class CF >\n-_\b3_\b7 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n-38 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< NedelecPreBasisFactory,\n-39 NedelecL2InterpolationFactory,\n-40 dim,dim,SF,CF >\n-41 {};\n-42}\n-43\n-44#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+36} // namespace Dune\n+37\n+38#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:_\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: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\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn defaultbasisfactory.hh:38\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:21\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:21\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: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/a00062.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: nedelecsimplexprebasis.hh File Reference\n+dune-localfunctions: rannachertureklocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    nedelecsimplexprebasis.hh File Reference
    \n+
    rannachertureklocalinterpolation.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 <cassert>
    \n+#include <vector>
    \n+#include <dune/common/fvector.hh>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.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::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,28 +1,25 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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-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+rannachertureklocalinterpolation.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_\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:_\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_\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/a00062_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00062_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: rannachertureklocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,353 +70,89 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelecsimplexprebasis.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
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright (C) 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_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <utility>
    \n+
    8#include <cassert>
    \n+
    9#include <vector>
    \n
    10
    \n-
    11#include <dune/geometry/type.hh>
    \n+
    11#include <dune/common/fvector.hh>
    \n
    12
    \n-\n+
    13#include <dune/geometry/referenceelements.hh>
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 template < GeometryType::Id geometryId, class Field >
    \n-
    18 struct NedelecVecMatrix;
    \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
    \n-
    37 template< GeometryType::Id geometryId >
    \n-
    \n-
    38 static Object *create ( Key order )
    \n-
    39 {
    \n-
    40 /*
    \n-
    41 * The nedelec parameter begins at 1.
    \n-
    42 * This is the numbering used by J.C. Nedelec himself.
    \n-
    43 * See "Mixed Finite Elements in \\R^3" published in 1980.
    \n-
    44 *
    \n-
    45 * This construction is based on the construction of Raviart-Thomas elements.
    \n-
    46 * There the numbering starts at 0.
    \n-
    47 * Because of this we reduce the order internally by 1.
    \n-
    48 */
    \n-
    49 order--;
    \n-\n-
    51 MBasis *mbasis = MBasisFactory::template create<geometryId>(order+1);
    \n-
    52 std::remove_const_t<Object>* tmBasis = new std::remove_const_t<Object>(*mbasis);
    \n-
    53 tmBasis->fill(vecMatrix);
    \n-
    54 return tmBasis;
    \n-
    55 }
    \n-
    \n-
    56 static void release( Object *object ) { delete object; }
    \n-
    57 };
    \n-
    \n-
    58
    \n-
    59 template <GeometryType::Id geometryId, class Field>
    \n-
    \n-\n-
    61 {
    \n-
    62 static constexpr GeometryType geometry = geometryId;
    \n-
    63 static const unsigned int dim = geometry.dim();
    \n-\n-\n-
    \n-
    66 NedelecVecMatrix(std::size_t order)
    \n-
    67 {
    \n-
    68 /*
    \n-
    69 * Construction of Nedelec elements see "Mixed Finite Elements in \\R^3" by Nedelec, 1980.
    \n-
    70 *
    \n-
    71 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree $\\leq k$.
    \n-
    72 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined as
    \n-
    73 *
    \n-
    74 * \\begin{equation*}
    \n-
    75 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: <p,x>=0 \\}
    \n-
    76 * \\end{equation*}
    \n-
    77 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.
    \n-
    78 *
    \n-
    79 * For $Ned_k$ holds
    \n-
    80 * \\begin{equation*}
    \n-
    81 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.
    \n-
    82 * \\end{equation*}
    \n-
    83 *
    \n-
    84 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in $Ned$.
    \n-
    85 *
    \n-
    86 */
    \n-
    87 if( (dim!=2 && dim!=3) || !geometry.isSimplex())
    \n-
    88 DUNE_THROW(Dune::NotImplemented,"High order nedelec elements are only supported by simplices in 2d and 3d");
    \n-
    89
    \n-
    90 MIBasis basis(order+1);
    \n-
    91 FieldVector< MI, dim > x;
    \n-
    92 /*
    \n-
    93 * Init MultiIndices
    \n-
    94 * x[0]=(1,0,0) x
    \n-
    95 * x[1]=(0,1,0) y
    \n-
    96 * x[2]=(0,0,1) z
    \n-
    97 */
    \n-
    98 for( unsigned int i = 0; i < dim; ++i )
    \n-
    99 x[i].set(i,1);
    \n-
    100 std::vector< MI > val( basis.size() );
    \n-
    101
    \n-
    102 // val now contains all monomials in $n$ dimensions with degree $\\leq order+1$
    \n-
    103 basis.evaluate( x, val );
    \n-
    104
    \n-
    105 col_ = basis.size();
    \n-
    106
    \n-
    107 // get $\\dim (\\P_{n,order-1})$
    \n-
    108 unsigned int notHomogen = 0;
    \n-
    109 if (order>0)
    \n-
    110 notHomogen = basis.sizes()[order-1];
    \n-
    111
    \n-
    112 // the number of basis functions for the set of homogeneous polynomials with degree $order$
    \n-
    113 unsigned int homogen = basis.sizes()[order]-notHomogen;
    \n-
    114
    \n-
    115 /*
    \n-
    116 * 2D:
    \n-
    117 * \\begin{equation*}
    \n-
    118 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}
    \n-
    119 * \\end{equation*}
    \n-
    120 *
    \n-
    121 * It gets more complicated in higher dimensions.
    \n-
    122 *
    \n-
    123 * 3D:
    \n-
    124 * \\begin{equation*}
    \n-
    125 * 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-
    126 * \\end{equation*}
    \n-
    127 *
    \n-
    128 * Note the last term. The index $n-1$ is on purpose.
    \n-
    129 * Else i.e. k=2
    \n-
    130 *
    \n-
    131 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.
    \n-
    132 *
    \n-
    133 */
    \n-
    134
    \n-
    135 /*
    \n-
    136 * compute the number of rows for the coefficient matrix
    \n-
    137 *
    \n-
    138 * row_ = dim* \\dim Ned_{order}
    \n-
    139 */
    \n-
    140 if (dim == 2)
    \n-
    141 row_ = (notHomogen*dim+homogen*(dim+1))*dim;
    \n-
    142 else if (dim==3)
    \n-
    143 {
    \n-
    144 // get dim \\P_{n-1,order-1}
    \n-
    145 int homogenTwoVariables = 0;
    \n-
    146 for( int w = notHomogen; w<notHomogen + homogen; w++)
    \n-
    147 if (val[w].z(0)==0)
    \n-
    148 homogenTwoVariables++;
    \n-
    149 row_ = (notHomogen*dim+homogen*(dim+2) + homogenTwoVariables)*dim;
    \n-
    150 }
    \n-
    151
    \n-
    152 mat_ = new Field*[row_];
    \n-
    153 int row = 0;
    \n-
    154
    \n-
    155 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_{n,order-1})^dim$
    \n-
    156 * A basis function is represented by $dim$ rows.
    \n-
    157 */
    \n-
    158 for (unsigned int i=0; i<notHomogen+homogen; ++i)
    \n-
    159 {
    \n-
    160 for (unsigned int r=0; r<dim; ++r)
    \n-
    161 {
    \n-
    162 for (unsigned int rr=0; rr<dim; ++rr)
    \n-
    163 {
    \n-
    164 // init row to zero
    \n-
    165 mat_[row] = new Field[col_];
    \n-
    166 for (unsigned int j=0; j<col_; ++j)
    \n-
    167 mat_[row][j] = 0.;
    \n-
    168
    \n-
    169 if (r==rr)
    \n-
    170 mat_[row][i] = 1.;
    \n-
    171 ++row;
    \n-
    172 }
    \n-
    173 }
    \n-
    174 }
    \n-
    175
    \n-
    176 /* Assign the correct values for the homogeneous polymonials $p\\in Ned_{order} \\backslash (\\P_{n,order-1})^dim$
    \n-
    177 * A basis function is represented by $dim$ rows.
    \n-
    178 */
    \n-
    179 for (unsigned int i=0; i<homogen; ++i)
    \n-
    180 {
    \n-
    181 // get a monomial $ p \\in \\P_{n,order}\\backslash \\P_{n,order-1}$
    \n-
    182 MI xval = val[notHomogen+i];
    \n-
    183 if(dim==2)
    \n-
    184 {
    \n-
    185 for (unsigned int r=0; r<dim; ++r)
    \n-
    186 {
    \n-
    187 // init rows to zero
    \n-
    188 mat_[row+r] = new Field[col_];
    \n-
    189 for (unsigned int j=0; j<col_; ++j)
    \n-
    190 mat_[row+r][j] = 0.;
    \n-
    191 }
    \n-
    192
    \n-
    193 /* set $(-y,x)^T p$ with a homogeneous monomial $p$
    \n-
    194 *
    \n-
    195 * The loop over the monomials is needed to obtain the corresponding column index.
    \n-
    196 */
    \n-
    197 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n-
    198 {
    \n-
    199 if (val[w] == xval*x[0])
    \n-
    200 mat_[row+1][w] = 1.;
    \n-
    201 if (val[w] == xval*x[1])
    \n-
    202 mat_[row][w] = -1.;
    \n-
    203 }
    \n-
    204 row +=dim;
    \n-
    205 }
    \n-
    206 else if(dim==3)
    \n-
    207 {
    \n-
    208 int skipLastDim = xval.z(0)>0;
    \n-
    209 /*
    \n-
    210 * Init 9 rows to zero.
    \n-
    211 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets skipped ( see example for the Nedelec space in 3D )
    \n-
    212 * In this case only 6 rows get initialised.
    \n-
    213 */
    \n-
    214 for (unsigned int r=0; r<dim*(dim-skipLastDim); ++r)
    \n-
    215 {
    \n-
    216 // init rows to zero
    \n-
    217 mat_[row+r] = new Field[col_];
    \n-
    218 for (unsigned int j=0; j<col_; ++j)
    \n-
    219 mat_[row+r][j] = 0.;
    \n-
    220 }
    \n-
    221
    \n-
    222 /*
    \n-
    223 * first $dim$ rows are for (z,0,-x)
    \n-
    224 *
    \n-
    225 * second $dim$ rows are for (-y,x,0)
    \n-
    226 *
    \n-
    227 * third $dim$ rows are for (0,-z,y)
    \n-
    228 *
    \n-
    229 */
    \n-
    230 for (unsigned int r=0; r<dim - skipLastDim; ++r)
    \n-
    231 {
    \n-
    232 int index = (r+dim-1)%dim;
    \n-
    233 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n-
    234 {
    \n-
    235 if (val[w] == xval*x[index])
    \n-
    236 mat_[row+r][w] = 1.;
    \n-
    237 if (val[w] == xval*x[r])
    \n-
    238 mat_[row+index][w] = -1.;
    \n-
    239 }
    \n-
    240 row +=dim;
    \n-
    241 }
    \n-
    242
    \n-
    243 }
    \n-
    244 }
    \n-
    245 }
    \n-
    \n-
    246
    \n-
    \n-\n-
    248 {
    \n-
    249 for (unsigned int i=0; i<rows(); ++i) {
    \n-
    250 delete [] mat_[i];
    \n-
    251 }
    \n-
    252 delete [] mat_;
    \n-
    253 }
    \n-
    \n-
    254
    \n-
    \n-
    255 unsigned int cols() const {
    \n-
    256 return col_;
    \n-
    257 }
    \n-
    \n-
    258
    \n-
    \n-
    259 unsigned int rows() const {
    \n-
    260 return row_;
    \n-
    261 }
    \n-
    \n-
    262
    \n-
    263 template <class Vector>
    \n-
    \n-
    264 void row( const unsigned int row, Vector &vec ) const
    \n-
    265 {
    \n-
    266 const unsigned int N = cols();
    \n-
    267 assert( vec.size() == N );
    \n-
    268 for (unsigned int i=0; i<N; ++i)
    \n-
    269 field_cast(mat_[row][i],vec[i]);
    \n-
    270 }
    \n-
    \n-
    271
    \n-
    272 unsigned int row_,col_;
    \n-
    273 Field **mat_;
    \n-
    274 };
    \n-
    \n-
    275
    \n-
    276
    \n-
    277}
    \n-
    278#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n-\n+\n+\n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n+
    20
    \n+
    28 template< class D, class R, unsigned int d >
    \n+
    \n+\n+
    30 {
    \n+\n+
    32 R, 1, FieldVector< R, 1 >,
    \n+
    33 FieldMatrix< R, 1, d > > Traits;
    \n+
    34
    \n+
    35 public:
    \n+
    36 template< class F, class C >
    \n+
    \n+
    37 void interpolate ( const F &ff, std::vector< C > &out ) const
    \n+
    38 {
    \n+
    39 typedef typename Traits::DomainType DomainType;
    \n+
    40
    \n+
    41 auto&& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n+
    42
    \n+
    43 // get cubic reference element
    \n+
    44 auto referenceElement = ReferenceElements< D, d >::cube();
    \n+
    45
    \n+
    46 const int size = 2*d;
    \n+
    47 assert( size == referenceElement.size( 1 ) );
    \n+
    48
    \n+
    49 // resize vector
    \n+
    50 out.resize( size );
    \n+
    51
    \n+
    52 // evaluate local function in barycenter of codim 1 subentities
    \n+
    53 for( int i = 0; i < size; ++i )
    \n+
    54 {
    \n+
    55 const DomainType &x = referenceElement.position( i, 1 );
    \n+
    56 out[ i ] = f(x);
    \n+
    57 }
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    60 };
    \n+
    \n+
    61
    \n+
    62} // namespace Dune
    \n+
    63
    \n+
    64#endif // #ifndef DUNE_RANNACHER_TUREK_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 nedelecsimplexprebasis.hh:61
    \n-
    NedelecVecMatrix(std::size_t order)
    Definition nedelecsimplexprebasis.hh:66
    \n-
    MultiIndex< dim, Field > MI
    Definition nedelecsimplexprebasis.hh:64
    \n-
    unsigned int row_
    Definition nedelecsimplexprebasis.hh:272
    \n-
    unsigned int cols() const
    Definition nedelecsimplexprebasis.hh:255
    \n-
    ~NedelecVecMatrix()
    Definition nedelecsimplexprebasis.hh:247
    \n-
    MonomialBasis< geometryId, MI > MIBasis
    Definition nedelecsimplexprebasis.hh:65
    \n-
    unsigned int col_
    Definition nedelecsimplexprebasis.hh:272
    \n-
    static const unsigned int dim
    Definition nedelecsimplexprebasis.hh:63
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition nedelecsimplexprebasis.hh:264
    \n-
    static constexpr GeometryType geometry
    Definition nedelecsimplexprebasis.hh:62
    \n-
    unsigned int rows() const
    Definition nedelecsimplexprebasis.hh:259
    \n-
    Field ** mat_
    Definition nedelecsimplexprebasis.hh:273
    \n-
    Definition nedelecsimplexprebasis.hh:22
    \n-
    static void release(Object *object)
    Definition nedelecsimplexprebasis.hh:56
    \n-
    MBasisFactory::Object MBasis
    Definition nedelecsimplexprebasis.hh:24
    \n-
    static Object * create(Key order)
    Definition nedelecsimplexprebasis.hh:38
    \n-
    PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis
    Definition nedelecsimplexprebasis.hh:26
    \n-
    const Basis Object
    Definition nedelecsimplexprebasis.hh:28
    \n-
    StandardEvaluator< MBasis > EvalMBasis
    Definition nedelecsimplexprebasis.hh:25
    \n-
    MonomialBasisProvider< dim, Field > MBasisFactory
    Definition nedelecsimplexprebasis.hh:23
    \n-
    std::size_t Key
    Definition nedelecsimplexprebasis.hh:29
    \n-
    Definition nedelecsimplexprebasis.hh:33
    \n-
    MonomialBasisProvider< dd, FF > Type
    Definition nedelecsimplexprebasis.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:37
    \n-
    int z(int i) const
    Definition multiindex.hh:91
    \n-
    Definition polynomialbasis.hh:348
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    please doc me
    Definition rannachertureklocalinterpolation.hh:30
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition rannachertureklocalinterpolation.hh:37
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,406 +1,86 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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 (C) 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_RANNACHER_TUREK_LOCALINTERPOLATION_HH\n+6#define DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_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\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+13#include \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 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\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\n-37 template< GeometryType::Id geometryId >\n-_\b3_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( _\bK_\be_\by order )\n-39 {\n-40 /*\n-41 * The nedelec parameter begins at 1.\n-42 * This is the numbering used by J.C. Nedelec himself.\n-43 * See \"Mixed Finite Elements in \\R^3\" published in 1980.\n-44 *\n-45 * This construction is based on the construction of Raviart-Thomas elements.\n-46 * There the numbering starts at 0.\n-47 * Because of this we reduce the order internally by 1.\n-48 */\n-49 order--;\n-50 _\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-51 _\bM_\bB_\ba_\bs_\bi_\bs *mbasis = MBasisFactory::template create(order+1);\n-52 std::remove_const_t* tmBasis = new std::remove_const_t\n-(*mbasis);\n-53 tmBasis->fill(vecMatrix);\n-54 return tmBasis;\n-55 }\n-_\b5_\b6 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-57 };\n-58\n-59 template \n-_\b6_\b0 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n-61 {\n-_\b6_\b2 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n-_\b6_\b3 static const unsigned int _\bd_\bi_\bm = _\bg_\be_\bo_\bm_\be_\bt_\br_\by._\bd_\bi_\bm();\n-_\b6_\b4 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_\b5 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_\b6 _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx(std::size_t order)\n-67 {\n-68 /*\n-69 * Construction of Nedelec elements see \"Mixed Finite Elements in \\R^3\" by\n-Nedelec, 1980.\n-70 *\n-71 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree\n-$\\leq k$.\n-72 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined\n-as\n-73 *\n-74 * \\begin{equation*}\n-75 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: =0 \\}\n-76 * \\end{equation*}\n-77 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.\n-78 *\n-79 * For $Ned_k$ holds\n-80 * \\begin{equation*}\n-81 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.\n-82 * \\end{equation*}\n-83 *\n-84 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in\n-$Ned$.\n-85 *\n-86 */\n-87 if( (_\bd_\bi_\bm!=2 && _\bd_\bi_\bm!=3) || !_\bg_\be_\bo_\bm_\be_\bt_\br_\by.isSimplex())\n-88 DUNE_THROW(Dune::NotImplemented,\"High order nedelec elements are only\n-supported by simplices in 2d and 3d\");\n-89\n-90 _\bM_\bI_\bB_\ba_\bs_\bi_\bs basis(order+1);\n-91 FieldVector< MI, dim > x;\n-92 /*\n-93 * Init MultiIndices\n-94 * x[0]=(1,0,0) x\n-95 * x[1]=(0,1,0) y\n-96 * x[2]=(0,0,1) z\n-97 */\n-98 for( unsigned int i = 0; i < _\bd_\bi_\bm; ++i )\n-99 x[i].set(i,1);\n-100 std::vector< MI > val( basis._\bs_\bi_\bz_\be() );\n-101\n-102 // val now contains all monomials in $n$ dimensions with degree $\\leq\n-order+1$\n-103 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, val );\n-104\n-105 _\bc_\bo_\bl_\b_ = basis._\bs_\bi_\bz_\be();\n-106\n-107 // get $\\dim (\\P_{n,order-1})$\n-108 unsigned int notHomogen = 0;\n-109 if (order>0)\n-110 notHomogen = basis._\bs_\bi_\bz_\be_\bs()[order-1];\n-111\n-112 // the number of basis functions for the set of homogeneous polynomials\n-with degree $order$\n-113 unsigned int homogen = basis._\bs_\bi_\bz_\be_\bs()[order]-notHomogen;\n-114\n-115 /*\n-116 * 2D:\n-117 * \\begin{equation*}\n-118 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}\n-119 * \\end{equation*}\n-120 *\n-121 * It gets more complicated in higher dimensions.\n-122 *\n-123 * 3D:\n-124 * \\begin{equation*}\n-125 * 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-126 * \\end{equation*}\n-127 *\n-128 * Note the last term. The index $n-1$ is on purpose.\n-129 * Else i.e. k=2\n-130 *\n-131 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.\n-132 *\n-133 */\n-134\n-135 /*\n-136 * compute the number of rows for the coefficient matrix\n-137 *\n-138 * row_ = dim* \\dim Ned_{order}\n-139 */\n-140 if (_\bd_\bi_\bm == 2)\n-141 _\br_\bo_\bw_\b_ = (notHomogen*_\bd_\bi_\bm+homogen*(_\bd_\bi_\bm+1))*_\bd_\bi_\bm;\n-142 else if (_\bd_\bi_\bm==3)\n-143 {\n-144 // get dim \\P_{n-1,order-1}\n-145 int homogenTwoVariables = 0;\n-146 for( int w = notHomogen; w0;\n-209 /*\n-210 * Init 9 rows to zero.\n-211 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets\n-skipped ( see example for the Nedelec space in 3D )\n-212 * In this case only 6 rows get initialised.\n-213 */\n-214 for (unsigned int r=0; r<_\bd_\bi_\bm*(_\bd_\bi_\bm-skipLastDim); ++r)\n-215 {\n-216 // init rows to zero\n-217 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r] = new Field[_\bc_\bo_\bl_\b_];\n-218 for (unsigned int j=0; j<_\bc_\bo_\bl_\b_; ++j)\n-219 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r][j] = 0.;\n-220 }\n-221\n-222 /*\n-223 * first $dim$ rows are for (z,0,-x)\n-224 *\n-225 * second $dim$ rows are for (-y,x,0)\n-226 *\n-227 * third $dim$ rows are for (0,-z,y)\n-228 *\n-229 */\n-230 for (unsigned int r=0; r<_\bd_\bi_\bm - skipLastDim; ++r)\n-231 {\n-232 int index = (r+_\bd_\bi_\bm-1)%_\bd_\bi_\bm;\n-233 for (int w=homogen+notHomogen; w\n-_\b2_\b6_\b4 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n-265 {\n-266 const unsigned int N = _\bc_\bo_\bl_\bs();\n-267 assert( vec.size() == N );\n-268 for (unsigned int i=0; i\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_\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+20\n+28 template< class D, class R, unsigned int d >\n+_\b2_\b9 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+30 {\n+31 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+32 R, 1, FieldVector< R, 1 >,\n+33 FieldMatrix< R, 1, d > > _\bT_\br_\ba_\bi_\bt_\bs;\n+34\n+35 public:\n+36 template< class F, class C >\n+_\b3_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const F &ff, std::vector< C > &out ) const\n+38 {\n+39 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be DomainType;\n+40\n+41 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+42\n+43 // get cubic reference element\n+44 auto referenceElement = ReferenceElements< D, d >::cube();\n+45\n+46 const int size = 2*d;\n+47 assert( size == referenceElement.size( 1 ) );\n+48\n+49 // resize vector\n+50 out.resize( size );\n+51\n+52 // evaluate local function in barycenter of codim 1 subentities\n+53 for( int i = 0; i < size; ++i )\n+54 {\n+55 const DomainType &x = referenceElement.position( i, 1 );\n+56 out[ i ] = f(x);\n+57 }\n+58 }\n+59\n+60 };\n+61\n+62} // namespace Dune\n+63\n+64#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:_\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:61\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: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:_\bM_\bI\n-MultiIndex< dim, Field > MI\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:_\br_\bo_\bw_\b_\n-unsigned int row_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:272\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:255\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:247\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: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:_\bc_\bo_\bl_\b_\n-unsigned int col_\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:272\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:63\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:264\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:62\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:259\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:273\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:22\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:56\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:24\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:38\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: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:_\bO_\bb_\bj_\be_\bc_\bt\n-const Basis Object\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:_\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: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:_\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:23\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: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:_\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:33\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: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:37\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:91\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_\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:34\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:42\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: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_\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 &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:37\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 ===============================================================================\n 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: nedelecsimplexinterpolation.hh File Reference\n+dune-localfunctions: rannacherturek.hh File Reference\n \n \n \n \n \n \n \n@@ -65,57 +65,29 @@\n \n \n \n \n \n \n \n
    \n- \n-
    nedelecsimplexinterpolation.hh File Reference
    \n+
    rannacherturek.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+\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-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 >
     
    \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.9.0\n Loading...\n Searching...\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-_\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+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_\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-\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/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: nedelecsimplexinterpolation.hh Source File\n+dune-localfunctions: rannacherturek.hh Source File\n \n \n \n \n \n \n \n@@ -70,816 +70,27 @@\n \n \n \n \n \n \n \n
    \n-
    nedelecsimplexinterpolation.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 (C) 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-
    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-
    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 NedelecL2InterpolationFactory;
    \n-
    31
    \n-
    32
    \n-
    33
    \n-
    34 // LocalCoefficientsContainer
    \n-
    35 // --------------------------
    \n-
    36
    \n-
    \n-\n-
    38 {
    \n-\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-
    \n-
    62
    \n-
    63
    \n-
    64
    \n-
    65 // NedelecCoefficientsFactory
    \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 NedelecL2InterpolationFactory< 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 GeometryType gt = geometryId;
    \n-
    90 return gt.isTriangle() || gt.isTetrahedron() ;
    \n-
    91 }
    \n-
    \n-
    92 static void release( Object *object ) { delete object; }
    \n-
    93 };
    \n-
    \n-
    94
    \n-
    95
    \n-
    96
    \n-
    97 // NedelecL2InterpolationBuilder
    \n-
    98 // ------------------------
    \n-
    99
    \n-
    100 // L2 Interpolation requires:
    \n-
    101 // - for element
    \n-
    102 // - test basis
    \n-
    103 // - for each face (dynamic)
    \n-
    104 // - test basis
    \n-
    105 // - tangents
    \n-
    106 // - for each edge (dynamic)
    \n-
    107 // - test basis
    \n-
    108 // - tangent
    \n-
    109 template< unsigned int dim, class Field >
    \n-
    \n-\n-
    111 {
    \n-
    112 static const unsigned int dimension = dim;
    \n-
    113
    \n-
    114 // for the dofs associated to the element
    \n-\n-\n-
    117
    \n-
    118 // for the dofs associated to the faces
    \n-\n-\n-
    121
    \n-
    122 // for the dofs associated to the edges
    \n-\n-\n-
    125
    \n-
    126 // the tangent of the edges
    \n-
    127 typedef FieldVector< Field, dimension > Tangent;
    \n-
    128
    \n-
    129 // the normal and the tangents of the faces
    \n-
    130 typedef FieldVector< Field, dimension > Normal;
    \n-
    131 typedef std::array<FieldVector< Field, dimension >,dim-1> FaceTangents;
    \n-
    132
    \n-\n-
    134
    \n-\n-\n-
    137
    \n-
    \n-\n-
    139 {
    \n-
    140 TestBasisFactory::release( testBasis_ );
    \n-
    141 for( FaceStructure &f : faceStructure_ )
    \n-\n-
    143 for( EdgeStructure& e : edgeStructure_ )
    \n-\n-
    145 }
    \n-
    \n-
    146
    \n-
    \n-
    147 unsigned int topologyId () const
    \n-
    148 {
    \n-
    149 return geometry_.id();
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    \n-
    152 GeometryType type () const
    \n-
    153 {
    \n-
    154 return geometry_;
    \n-
    155 }
    \n-
    \n-
    156
    \n-
    \n-
    157 std::size_t order () const
    \n-
    158 {
    \n-
    159 return order_;
    \n-
    160 }
    \n-
    \n-
    161
    \n-
    162 // number of faces
    \n-
    \n-
    163 unsigned int faceSize () const
    \n-
    164 {
    \n-
    165 return numberOfFaces_;
    \n-
    166 }
    \n-
    \n-
    167
    \n-
    168 // number of edges
    \n-
    \n-
    169 unsigned int edgeSize () const
    \n-
    170 {
    \n-
    171 return numberOfEdges_;
    \n-
    172 }
    \n-
    \n-
    173
    \n-
    174 // basis associated to the element
    \n-
    \n-\n-
    176 {
    \n-
    177 return testBasis_;
    \n-
    178 }
    \n-
    \n-
    179
    \n-
    180 // basis associated to face f
    \n-
    \n-
    181 TestFaceBasis *testFaceBasis ( unsigned int f ) const
    \n-
    182 {
    \n-
    183 assert( f < faceSize() );
    \n-
    184 return faceStructure_[ f ].basis_;
    \n-
    185 }
    \n-
    \n-
    186
    \n-
    187 // basis associated to edge e
    \n-
    \n-
    188 TestEdgeBasis *testEdgeBasis ( unsigned int e ) const
    \n-
    189 {
    \n-
    190 assert( e < edgeSize() );
    \n-
    191 return edgeStructure_[ e ].basis_;
    \n-
    192 }
    \n-
    \n-
    193
    \n-
    \n-
    194 const Tangent& edgeTangent ( unsigned int e ) const
    \n-
    195 {
    \n-
    196 assert( e < edgeSize() );
    \n-
    197 return edgeStructure_[ e ].tangent_;
    \n-
    198 }
    \n-
    \n-
    199
    \n-
    \n-
    200 const FaceTangents& faceTangents ( unsigned int f ) const
    \n-
    201 {
    \n-
    202 assert( f < faceSize() );
    \n-
    203 return faceStructure_[ f ].faceTangents_;
    \n-
    204 }
    \n-
    \n-
    205
    \n-
    \n-
    206 const Normal &normal ( unsigned int f ) const
    \n-
    207 {
    \n-
    208 assert( f < faceSize() );
    \n-
    209 return faceStructure_[ f ].normal_;
    \n-
    210 }
    \n-
    \n-
    211
    \n-
    212 template< GeometryType::Id geometryId >
    \n-
    \n-
    213 void build ( std::size_t order )
    \n-
    214 {
    \n-
    215 constexpr GeometryType geometry = geometryId;
    \n-
    216 order_ = order;
    \n-
    217 geometry_ = geometry;
    \n-
    218
    \n-
    219 /*
    \n-
    220 * The Nedelec parameter begins at 1.
    \n-
    221 * This is the numbering used by J.C. Nedelec himself.
    \n-
    222 * See "Mixed Finite Elements in \\R^3" published in 1980.
    \n-
    223 *
    \n-
    224 * This construction is based on the construction of Raviart-Thomas elements.
    \n-
    225 * There the numbering starts at 0.
    \n-
    226 * Because of this we reduce the order internally by 1.
    \n-
    227 */
    \n-
    228 order--;
    \n-
    229
    \n-
    230 // if dimension == 2: order-1 on element
    \n-
    231 // if dimension == 3: order-2 on element
    \n-
    232 int requiredOrder = static_cast<int>(dimension==3);
    \n-
    233 testBasis_ = (order > requiredOrder ? TestBasisFactory::template create< geometry >( order-1-requiredOrder ) : nullptr);
    \n-
    234
    \n-
    235 const auto &refElement = ReferenceElements< Field, dimension >::general( type() );
    \n-
    236
    \n-
    237 numberOfFaces_ = refElement.size( 1 );
    \n-
    238 faceStructure_.reserve( numberOfFaces_ );
    \n-
    239
    \n-
    240 // compute the basis, tangents and normals of each face
    \n-
    241 for (std::size_t i=0; i<numberOfFaces_; i++)
    \n-
    242 {
    \n-
    243 FieldVector<Field,dimension> zero(0);
    \n-\n-
    245 faceTangents.fill(zero);
    \n-
    246
    \n-
    247 // use the first dim-1 vertices of a face to compute the tangents
    \n-
    248 auto vertices = refElement.subEntities(i,1,dim).begin();
    \n-
    249 auto vertex1 = *vertices;
    \n-
    250 for(int j=1; j<dim;j++)
    \n-
    251 {
    \n-
    252 auto vertex2 = vertices[j];
    \n-
    253
    \n-
    254 faceTangents[j-1] = refElement.position(vertex2,dim) - refElement.position(vertex1,dim);
    \n-
    255
    \n-
    256 // By default, edges point from the vertex with the smaller index
    \n-
    257 // to the vertex with the larger index.
    \n-
    258 if (vertex1>vertex2)
    \n-
    259 faceTangents[j-1] *=-1;
    \n-
    260
    \n-
    261 vertex1 = vertex2;
    \n-
    262 }
    \n-
    263
    \n-
    264 /* For simplices or cubes of arbitrary dimension you could just use
    \n-
    265 *
    \n-
    266 * ```
    \n-
    267 * GeometryType faceGeometry = Impl::getBase(geometry_);
    \n-
    268 * TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ? TestFaceBasisFactory::template create< faceGeometry >( order-1 ) : nullptr);
    \n-
    269 * ```
    \n-
    270 *
    \n-
    271 * For i.e. Prisms and Pyramids in 3d this does not work because they contain squares and triangles as faces.
    \n-
    272 * And depending on the dynamic face index a different face geometry is needed.
    \n-
    273 *
    \n-
    274 */
    \n-
    275 TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ? Impl::IfGeometryType< CreateFaceBasis, dimension-1 >::apply( refElement.type( i, 1 ), order-1 ) : nullptr);
    \n-
    276 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal(i), faceTangents );
    \n-
    277 }
    \n-
    278 assert( faceStructure_.size() == numberOfFaces_ );
    \n-
    279
    \n-
    280 numberOfEdges_ = refElement.size( dim-1 );
    \n-
    281 edgeStructure_.reserve( numberOfEdges_ );
    \n-
    282
    \n-
    283 // compute the basis and tangent of each edge
    \n-
    284 for (std::size_t i=0; i<numberOfEdges_; i++)
    \n-
    285 {
    \n-
    286 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n-
    287 auto v0 = *vertexIterator;
    \n-
    288 auto v1 = *(++vertexIterator);
    \n-
    289
    \n-
    290 // By default, edges point from the vertex with the smaller index
    \n-
    291 // to the vertex with the larger index.
    \n-
    292 if (v0>v1)
    \n-
    293 std::swap(v0,v1);
    \n-
    294 auto tangent = std::move(refElement.position(v1,dim) - refElement.position(v0,dim));
    \n-
    295
    \n-
    296 TestEdgeBasis *edgeBasis = Impl::IfGeometryType< CreateEdgeBasis, 1 >::apply( refElement.type( i, dim-1 ), order );
    \n-
    297 edgeStructure_.emplace_back( edgeBasis, tangent );
    \n-
    298 }
    \n-
    299 assert( edgeStructure_.size() == numberOfEdges_ );
    \n-
    300 }
    \n-
    \n-
    301
    \n-
    302 private:
    \n-
    303
    \n-
    304 // helper struct for edges
    \n-
    305 struct EdgeStructure
    \n-
    306 {
    \n-
    307 EdgeStructure( TestEdgeBasis *teb, const Tangent &t )
    \n-
    308 : basis_( teb ), tangent_( t )
    \n-
    309 {}
    \n-
    310
    \n-
    311 TestEdgeBasis *basis_;
    \n-
    312 const Dune::FieldVector< Field, dimension > tangent_;
    \n-
    313 };
    \n-
    314
    \n-
    315 template< GeometryType::Id edgeGeometryId >
    \n-
    316 struct CreateEdgeBasis
    \n-
    317 {
    \n-
    318 static TestEdgeBasis *apply ( std::size_t order ) { return TestEdgeBasisFactory::template create< edgeGeometryId >( order ); }
    \n-
    319 };
    \n-
    320
    \n-
    321 // helper struct for faces
    \n-
    322 struct FaceStructure
    \n-
    323 {
    \n-
    324 FaceStructure( TestFaceBasis *tfb, const Normal& normal, const FaceTangents& faceTangents )
    \n-
    325 : basis_( tfb ), normal_(normal), faceTangents_( faceTangents )
    \n-
    326 {}
    \n-
    327
    \n-
    328 TestFaceBasis *basis_;
    \n-
    329 const Dune::FieldVector< Field, dimension > normal_;
    \n-
    330 const FaceTangents faceTangents_;
    \n-
    331 };
    \n-
    332
    \n-
    333 template< GeometryType::Id faceGeometryId >
    \n-
    334 struct CreateFaceBasis
    \n-
    335 {
    \n-
    336 static TestFaceBasis *apply ( std::size_t order ) { return TestFaceBasisFactory::template create< faceGeometryId >( order ); }
    \n-
    337 };
    \n-
    338
    \n-
    339 TestBasis *testBasis_ = nullptr;
    \n-
    340 std::vector< FaceStructure > faceStructure_;
    \n-
    341 unsigned int numberOfFaces_;
    \n-
    342 std::vector< EdgeStructure > edgeStructure_;
    \n-
    343 unsigned int numberOfEdges_;
    \n-
    344 GeometryType geometry_;
    \n-
    345 std::size_t order_;
    \n-
    346 };
    \n-
    \n-
    347
    \n-
    348
    \n-
    349
    \n-
    350 // NedelecL2Interpolation
    \n-
    351 // ----------------------------
    \n-
    352
    \n-
    358 template< unsigned int dimension, class F>
    \n-
    \n-\n-
    360 : public InterpolationHelper< F ,dimension >
    \n-
    361 {
    \n-\n-\n-
    364
    \n-
    365 public:
    \n-
    366 typedef F Field;
    \n-\n-\n-
    369
    \n-
    \n-\n-
    371 : order_(0),
    \n-
    372 size_(0)
    \n-
    373 {}
    \n-
    \n-
    374
    \n-
    375 template< class Function, class Vector >
    \n-
    \n-
    376 auto interpolate ( const Function &function, Vector &coefficients ) const
    \n-
    377 -> std::enable_if_t< std::is_same< decltype(std::declval<Vector>().resize(1) ),void >::value,void>
    \n-
    378 {
    \n-
    379 coefficients.resize(size());
    \n-
    380 typename Base::template Helper<Function,Vector,true> func( function,coefficients );
    \n-
    381 interpolate(func);
    \n-
    382 }
    \n-
    \n-
    383
    \n-
    384 template< class Basis, class Matrix >
    \n-
    \n-
    385 auto interpolate ( const Basis &basis, Matrix &matrix ) const
    \n-
    386 -> std::enable_if_t< std::is_same<
    \n-
    387 decltype(std::declval<Matrix>().rowPtr(0)), typename Matrix::Field* >::value,void>
    \n-
    388 {
    \n-
    389 matrix.resize( size(), basis.size() );
    \n-
    390 typename Base::template Helper<Basis,Matrix,false> func( basis,matrix );
    \n-
    391 interpolate(func);
    \n-
    392 }
    \n-
    \n-
    393
    \n-
    \n-
    394 std::size_t order() const
    \n-
    395 {
    \n-
    396 return order_;
    \n-
    397 }
    \n-
    \n-
    \n-
    398 std::size_t size() const
    \n-
    399 {
    \n-
    400 return size_;
    \n-
    401 }
    \n-
    \n-
    402
    \n-
    403 template <GeometryType::Id geometryId>
    \n-
    \n-
    404 void build( std::size_t order )
    \n-
    405 {
    \n-
    406 size_ = 0;
    \n-
    407 order_ = order;
    \n-
    408 builder_.template build<geometryId>(order_);
    \n-
    409 if (builder_.testBasis())
    \n-
    410 size_ += dimension*builder_.testBasis()->size();
    \n-
    411
    \n-
    412 for ( unsigned int f=0; f<builder_.faceSize(); ++f )
    \n-
    413 if (builder_.testFaceBasis(f))
    \n-
    414 size_ += (dimension-1)*builder_.testFaceBasis(f)->size();
    \n-
    415
    \n-
    416 for ( unsigned int e=0; e<builder_.edgeSize(); ++e )
    \n-
    417 if (builder_.testEdgeBasis(e))
    \n-\n-
    419 }
    \n-
    \n-
    420
    \n-
    \n-
    421 void setLocalKeys(std::vector< LocalKey > &keys) const
    \n-
    422 {
    \n-
    423 keys.resize(size());
    \n-
    424 unsigned int row = 0;
    \n-
    425 for (unsigned int e=0; e<builder_.edgeSize(); ++e)
    \n-
    426 {
    \n-
    427 if (builder_.edgeSize())
    \n-
    428 for (unsigned int i=0; i<builder_.testEdgeBasis(e)->size(); ++i,++row)
    \n-
    429 keys[row] = LocalKey(e,dimension-1,i);
    \n-
    430 }
    \n-
    431 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    432 {
    \n-
    433 if (builder_.faceSize())
    \n-
    434 for (unsigned int i=0; i<builder_.testFaceBasis(f)->size()*(dimension-1); ++i,++row)
    \n-
    435 keys[row] = LocalKey(f,1,i);
    \n-
    436 }
    \n-
    437
    \n-
    438 if (builder_.testBasis())
    \n-
    439 for (unsigned int i=0; i<builder_.testBasis()->size()*dimension; ++i,++row)
    \n-
    440 keys[row] = LocalKey(0,0,i);
    \n-
    441 assert( row == size() );
    \n-
    442 }
    \n-
    \n-
    443
    \n-
    444 protected:
    \n-
    445 template< class Func, class Container, bool type >
    \n-
    \n-
    446 void interpolate ( typename Base::template Helper<Func,Container,type> &func ) const
    \n-
    447 {
    \n-
    448 const Dune::GeometryType geoType( builder_.topologyId(), dimension );
    \n-
    449
    \n-
    450 std::vector<Field> testBasisVal;
    \n-
    451
    \n-
    452 for (unsigned int i=0; i<size(); ++i)
    \n-
    453 for (unsigned int j=0; j<func.size(); ++j)
    \n-
    454 func.set(i,j,0);
    \n-
    455
    \n-
    456 unsigned int row = 0;
    \n-
    457
    \n-
    458 // edge dofs:
    \n-
    459 typedef Dune::QuadratureRule<Field, 1> EdgeQuadrature;
    \n-
    460 typedef Dune::QuadratureRules<Field, 1> EdgeQuadratureRules;
    \n-
    461
    \n-
    462 const auto &refElement = Dune::ReferenceElements< Field, dimension >::general( geoType );
    \n-
    463
    \n-
    464 for (unsigned int e=0; e<builder_.edgeSize(); ++e)
    \n-
    465 {
    \n-
    466 if (!builder_.testEdgeBasis(e))
    \n-
    467 continue;
    \n-
    468 testBasisVal.resize(builder_.testEdgeBasis(e)->size());
    \n-
    469
    \n-
    470 const auto &geometry = refElement.template geometry< dimension-1 >( e );
    \n-
    471 const Dune::GeometryType subGeoType( geometry.type().id(), 1 );
    \n-
    472 const EdgeQuadrature &edgeQuad = EdgeQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n-
    473
    \n-
    474 const unsigned int quadratureSize = edgeQuad.size();
    \n-
    475 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    476 {
    \n-
    477 if (dimension>1)
    \n-
    478 builder_.testEdgeBasis(e)->template evaluate<0>(edgeQuad[qi].position(),testBasisVal);
    \n-
    479 else
    \n-
    480 testBasisVal[0] = 1.;
    \n-
    481 computeEdgeDofs(row,
    \n-
    482 testBasisVal,
    \n-
    483 func.evaluate( geometry.global( edgeQuad[qi].position() ) ),
    \n-\n-
    485 edgeQuad[qi].weight(),
    \n-
    486 func);
    \n-
    487 }
    \n-
    488
    \n-
    489 row += builder_.testEdgeBasis(e)->size();
    \n-
    490 }
    \n-
    491
    \n-
    492 // face dofs:
    \n-
    493 typedef Dune::QuadratureRule<Field, dimension-1> FaceQuadrature;
    \n-
    494 typedef Dune::QuadratureRules<Field, dimension-1> FaceQuadratureRules;
    \n-
    495
    \n-
    496 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    497 {
    \n-
    498 if (builder_.testFaceBasis(f))
    \n-
    499 {
    \n-
    500 testBasisVal.resize(builder_.testFaceBasis(f)->size());
    \n-
    501
    \n-
    502 const auto &geometry = refElement.template geometry< 1 >( f );
    \n-
    503 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );
    \n-
    504 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n-
    505
    \n-
    506 const unsigned int quadratureSize = faceQuad.size();
    \n-
    507 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    508 {
    \n-
    509 if (dimension>1)
    \n-
    510 builder_.testFaceBasis(f)->template evaluate<0>(faceQuad[qi].position(),testBasisVal);
    \n-
    511 else
    \n-
    512 testBasisVal[0] = 1.;
    \n-
    513
    \n-
    514 computeFaceDofs( row,
    \n-
    515 testBasisVal,
    \n-
    516 func.evaluate( geometry.global( faceQuad[qi].position() ) ),
    \n-\n-
    518 builder_.normal(f),
    \n-
    519 faceQuad[qi].weight(),
    \n-
    520 func);
    \n-
    521 }
    \n-
    522
    \n-
    523 row += builder_.testFaceBasis(f)->size()*(dimension-1);
    \n-
    524 }
    \n-
    525 }
    \n-
    526
    \n-
    527 // element dofs
    \n-
    528 if (builder_.testBasis())
    \n-
    529 {
    \n-
    530 testBasisVal.resize(builder_.testBasis()->size());
    \n-
    531
    \n-
    532 typedef Dune::QuadratureRule<Field, dimension> Quadrature;
    \n-
    533 typedef Dune::QuadratureRules<Field, dimension> QuadratureRules;
    \n-
    534 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );
    \n-
    535
    \n-
    536 const unsigned int quadratureSize = elemQuad.size();
    \n-
    537 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    538 {
    \n-
    539 builder_.testBasis()->template evaluate<0>(elemQuad[qi].position(),testBasisVal);
    \n-
    540 computeInteriorDofs(row,
    \n-
    541 testBasisVal,
    \n-
    542 func.evaluate(elemQuad[qi].position()),
    \n-
    543 elemQuad[qi].weight(),
    \n-
    544 func );
    \n-
    545 }
    \n-
    546
    \n-
    547 row += builder_.testBasis()->size()*dimension;
    \n-
    548 }
    \n-
    549 assert(row==size());
    \n-
    550 }
    \n-
    \n-
    551
    \n-
    552 private:
    \n-
    562 template <class MVal, class NedVal,class Matrix>
    \n-
    563 void computeEdgeDofs (unsigned int startRow,
    \n-
    564 const MVal &mVal,
    \n-
    565 const NedVal &nedVal,
    \n-
    566 const FieldVector<Field,dimension> &tangent,
    \n-
    567 const Field &weight,
    \n-
    568 Matrix &matrix) const
    \n-
    569 {
    \n-
    570 const unsigned int endRow = startRow+mVal.size();
    \n-
    571 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n-
    572 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n-
    573 {
    \n-
    574 Field cFactor = (*nedIter)*tangent;
    \n-
    575 typename MVal::const_iterator mIter = mVal.begin();
    \n-
    576 for (unsigned int row = startRow; row!=endRow; ++mIter, ++row )
    \n-
    577 matrix.add(row,col, (weight*cFactor)*(*mIter) );
    \n-
    578
    \n-
    579 assert( mIter == mVal.end() );
    \n-
    580 }
    \n-
    581 }
    \n-
    582
    \n-
    593 template <class MVal, class NedVal,class Matrix>
    \n-
    594 void computeFaceDofs (unsigned int startRow,
    \n-
    595 const MVal &mVal,
    \n-
    596 const NedVal &nedVal,
    \n-
    597 const FaceTangents& faceTangents,
    \n-
    598 const FieldVector<Field,dimension> &normal,
    \n-
    599 const Field &weight,
    \n-
    600 Matrix &matrix) const
    \n-
    601 {
    \n-
    602 const unsigned int endRow = startRow+mVal.size()*(dimension-1);
    \n-
    603 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n-
    604 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n-
    605 {
    \n-
    606 auto const& u=*nedIter;
    \n-
    607 auto const& n=normal;
    \n-
    608 FieldVector<Field,dimension> nedTimesNormal = { u[1]*n[2]-u[2]*n[1],
    \n-
    609 u[2]*n[0]-u[0]*n[2],
    \n-
    610 u[0]*n[1]-u[1]*n[0]};
    \n-
    611 typename MVal::const_iterator mIter = mVal.begin();
    \n-
    612 for (unsigned int row = startRow; row!=endRow; ++mIter)
    \n-
    613 {
    \n-
    614 for(int i=0; i<dimension-1;i++)
    \n-
    615 {
    \n-
    616 auto test = *mIter*faceTangents[i];
    \n-
    617 matrix.add(row+i,col, weight*(nedTimesNormal*test) );
    \n-
    618 }
    \n-
    619 row += dimension-1;
    \n-
    620 }
    \n-
    621
    \n-
    622 assert( mIter == mVal.end() );
    \n-
    623 }
    \n-
    624 }
    \n-
    625
    \n-
    634 template <class MVal, class NedVal,class Matrix>
    \n-
    635 void computeInteriorDofs (unsigned int startRow,
    \n-
    636 const MVal &mVal,
    \n-
    637 const NedVal &nedVal,
    \n-
    638 Field weight,
    \n-
    639 Matrix &matrix) const
    \n-
    640 {
    \n-
    641 const unsigned int endRow = startRow+mVal.size()*dimension;
    \n-
    642 typename NedVal::const_iterator nedIter = nedVal.begin();
    \n-
    643 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)
    \n-
    644 {
    \n-
    645 typename MVal::const_iterator mIter = mVal.begin();
    \n-
    646 for (unsigned int row = startRow; row!=endRow; ++mIter,row+=dimension )
    \n-
    647 for (unsigned int i=0; i<dimension; ++i)
    \n-
    648 matrix.add(row+i,col, (weight*(*mIter))*(*nedIter)[i] );
    \n-
    649
    \n-
    650 assert( mIter == mVal.end() );
    \n-
    651 }
    \n-
    652 }
    \n-
    653
    \n-
    654 public:
    \n-\n-
    656 std::size_t order_;
    \n-
    657 std::size_t size_;
    \n-
    658 };
    \n-
    \n-
    659
    \n-
    660 template < unsigned int dim, class Field >
    \n-
    \n-\n-
    662 {
    \n-\n-\n-
    665 typedef std::size_t Key;
    \n-
    666 typedef typename std::remove_const<Object>::type NonConstObject;
    \n-
    667
    \n-
    668 template <GeometryType::Id geometryId>
    \n-
    \n-
    669 static Object *create( const Key &key )
    \n-
    670 {
    \n-
    671 if ( !supports<geometryId>(key) )
    \n-
    672 return 0;
    \n-
    673 NonConstObject *interpol = new NonConstObject();
    \n-
    674 interpol->template build<geometryId>(key);
    \n-
    675 return interpol;
    \n-
    676 }
    \n-
    \n-
    677
    \n-
    678 template <GeometryType::Id geometryId>
    \n-
    \n-
    679 static bool supports( const Key &key )
    \n-
    680 {
    \n-
    681 GeometryType gt = geometryId;
    \n-
    682 return gt.isTriangle() || gt.isTetrahedron() ;
    \n-
    683 }
    \n-
    \n-
    684 static void release( Object *object ) { delete object; }
    \n-
    685 };
    \n-
    \n-
    686
    \n-
    687} // namespace Dune
    \n-
    688
    \n-
    689#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXINTERPOLATION_HH
    \n-\n-\n-\n-\n-
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Definition nedelecsimplexinterpolation.hh:662
    \n-
    static Object * create(const Key &key)
    Definition nedelecsimplexinterpolation.hh:669
    \n-
    const NedelecL2Interpolation< dim, Field > Object
    Definition nedelecsimplexinterpolation.hh:664
    \n-
    NedelecL2InterpolationBuilder< dim, Field > Builder
    Definition nedelecsimplexinterpolation.hh:663
    \n-
    std::size_t Key
    Definition nedelecsimplexinterpolation.hh:665
    \n-
    static bool supports(const Key &key)
    Definition nedelecsimplexinterpolation.hh:679
    \n-
    std::remove_const< Object >::type NonConstObject
    Definition nedelecsimplexinterpolation.hh:666
    \n-
    static void release(Object *object)
    Definition nedelecsimplexinterpolation.hh:684
    \n-
    Definition nedelecsimplexinterpolation.hh:38
    \n-
    LocalCoefficientsContainer(const Setter &setter)
    Definition nedelecsimplexinterpolation.hh:43
    \n-
    const LocalKey & localKey(const unsigned int i) const
    Definition nedelecsimplexinterpolation.hh:48
    \n-
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:54
    \n-
    Definition nedelecsimplexinterpolation.hh:70
    \n-
    static Object * create(const Key &key)
    Definition nedelecsimplexinterpolation.hh:75
    \n-
    static bool supports(const Key &key)
    Definition nedelecsimplexinterpolation.hh:87
    \n-
    const LocalCoefficientsContainer Object
    Definition nedelecsimplexinterpolation.hh:72
    \n-
    std::size_t Key
    Definition nedelecsimplexinterpolation.hh:71
    \n-
    static void release(Object *object)
    Definition nedelecsimplexinterpolation.hh:92
    \n-
    Definition nedelecsimplexinterpolation.hh:111
    \n-
    TestEdgeBasis * testEdgeBasis(unsigned int e) const
    Definition nedelecsimplexinterpolation.hh:188
    \n-
    ~NedelecL2InterpolationBuilder()
    Definition nedelecsimplexinterpolation.hh:138
    \n-
    GeometryType type() const
    Definition nedelecsimplexinterpolation.hh:152
    \n-
    TestBasisFactory::Object TestBasis
    Definition nedelecsimplexinterpolation.hh:116
    \n-
    FieldVector< Field, dimension > Tangent
    Definition nedelecsimplexinterpolation.hh:127
    \n-
    TestFaceBasisFactory::Object TestFaceBasis
    Definition nedelecsimplexinterpolation.hh:120
    \n-
    TestFaceBasis * testFaceBasis(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:181
    \n-
    TestEdgeBasisFactory::Object TestEdgeBasis
    Definition nedelecsimplexinterpolation.hh:124
    \n-
    FieldVector< Field, dimension > Normal
    Definition nedelecsimplexinterpolation.hh:130
    \n-
    void build(std::size_t order)
    Definition nedelecsimplexinterpolation.hh:213
    \n-
    OrthonormalBasisFactory< dimension, Field > TestBasisFactory
    Definition nedelecsimplexinterpolation.hh:115
    \n-
    OrthonormalBasisFactory< dimension-1, Field > TestFaceBasisFactory
    Definition nedelecsimplexinterpolation.hh:119
    \n-
    const FaceTangents & faceTangents(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:200
    \n-
    unsigned int faceSize() const
    Definition nedelecsimplexinterpolation.hh:163
    \n-
    TestBasis * testBasis() const
    Definition nedelecsimplexinterpolation.hh:175
    \n-
    std::array< FieldVector< Field, dimension >, dim-1 > FaceTangents
    Definition nedelecsimplexinterpolation.hh:131
    \n-
    OrthonormalBasisFactory< 1, Field > TestEdgeBasisFactory
    Definition nedelecsimplexinterpolation.hh:123
    \n-
    const Tangent & edgeTangent(unsigned int e) const
    Definition nedelecsimplexinterpolation.hh:194
    \n-
    NedelecL2InterpolationBuilder(NedelecL2InterpolationBuilder &&)=delete
    \n-
    std::size_t order() const
    Definition nedelecsimplexinterpolation.hh:157
    \n-
    unsigned int edgeSize() const
    Definition nedelecsimplexinterpolation.hh:169
    \n-
    unsigned int topologyId() const
    Definition nedelecsimplexinterpolation.hh:147
    \n-
    NedelecL2InterpolationBuilder(const NedelecL2InterpolationBuilder &)=delete
    \n-
    static const unsigned int dimension
    Definition nedelecsimplexinterpolation.hh:112
    \n-\n-
    const Normal & normal(unsigned int f) const
    Definition nedelecsimplexinterpolation.hh:206
    \n-
    An L2-based interpolation for Nedelec.
    Definition nedelecsimplexinterpolation.hh:361
    \n-
    Builder::FaceTangents FaceTangents
    Definition nedelecsimplexinterpolation.hh:368
    \n-
    F Field
    Definition nedelecsimplexinterpolation.hh:366
    \n-
    auto interpolate(const Function &function, Vector &coefficients) const -> std::enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void >::value, void >
    Definition nedelecsimplexinterpolation.hh:376
    \n-
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:398
    \n-
    void interpolate(typename Base::template Helper< Func, Container, type > &func) const
    Definition nedelecsimplexinterpolation.hh:446
    \n-
    std::size_t order_
    Definition nedelecsimplexinterpolation.hh:656
    \n-
    NedelecL2InterpolationBuilder< dimension, Field > Builder
    Definition nedelecsimplexinterpolation.hh:367
    \n-
    auto interpolate(const Basis &basis, Matrix &matrix) const -> std::enable_if_t< std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::Field * >::value, void >
    Definition nedelecsimplexinterpolation.hh:385
    \n-
    std::size_t size_
    Definition nedelecsimplexinterpolation.hh:657
    \n-
    NedelecL2Interpolation()
    Definition nedelecsimplexinterpolation.hh:370
    \n-
    void build(std::size_t order)
    Definition nedelecsimplexinterpolation.hh:404
    \n-
    std::size_t order() const
    Definition nedelecsimplexinterpolation.hh:394
    \n-
    void setLocalKeys(std::vector< LocalKey > &keys) const
    Definition nedelecsimplexinterpolation.hh:421
    \n-
    Builder builder_
    Definition nedelecsimplexinterpolation.hh:655
    \n-
    Definition orthonormalbasis.hh:20
    \n-
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n-
    Definition interpolationhelper.hh:22
    \n-
    Definition interpolationhelper.hh:24
    \n-
    Definition polynomialbasis.hh:65
    \n-
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,903 +1,17 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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-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-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 NedelecL2InterpolationFactory;\n-31\n-32\n-33\n-34 // LocalCoefficientsContainer\n-35 // --------------------------\n-36\n-_\b3_\b7 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-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 _\bT_\bh_\bi_\bs;\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 // NedelecCoefficientsFactory\n-66 // --------------------------------\n-67\n-68 template < unsigned int dim >\n-_\b6_\b9 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-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 _\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-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 GeometryType gt = geometryId;\n-90 return gt.isTriangle() || gt.isTetrahedron() ;\n-91 }\n-_\b9_\b2 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-93 };\n-94\n-95\n-96\n-97 // NedelecL2InterpolationBuilder\n-98 // ------------------------\n-99\n-100 // L2 Interpolation requires:\n-101 // - for element\n-102 // - test basis\n-103 // - for each face (dynamic)\n-104 // - test basis\n-105 // - tangents\n-106 // - for each edge (dynamic)\n-107 // - test basis\n-108 // - tangent\n-109 template< unsigned int dim, class Field >\n-_\b1_\b1_\b0 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-111 {\n-_\b1_\b1_\b2 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-113\n-114 // for the dofs associated to the element\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_\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_\b6 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-117\n-118 // for the dofs associated to the faces\n-_\b1_\b1_\b9 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_\b0 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-121\n-122 // for the dofs associated to the edges\n-_\b1_\b2_\b3 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_\b4 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-125\n-126 // the tangent of the edges\n-_\b1_\b2_\b7 typedef FieldVector< Field, dimension > _\bT_\ba_\bn_\bg_\be_\bn_\bt;\n-128\n-129 // the normal and the tangents of the faces\n-_\b1_\b3_\b0 typedef FieldVector< Field, dimension > _\bN_\bo_\br_\bm_\ba_\bl;\n-_\b1_\b3_\b1 typedef std::array,dim-1> _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs;\n-132\n-_\b1_\b3_\b3 _\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-134\n-_\b1_\b3_\b5 _\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_\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 ( _\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-137\n-_\b1_\b3_\b8 _\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-139 {\n-140 _\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-141 for( FaceStructure &f : faceStructure_ )\n-142 _\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-143 for( EdgeStructure& e : edgeStructure_ )\n-144 _\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-145 }\n-146\n-_\b1_\b4_\b7 unsigned int _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd () const\n-148 {\n-149 return geometry_.id();\n-150 }\n-151\n-_\b1_\b5_\b2 GeometryType _\bt_\by_\bp_\be () const\n-153 {\n-154 return geometry_;\n-155 }\n-156\n-_\b1_\b5_\b7 std::size_t _\bo_\br_\bd_\be_\br () const\n-158 {\n-159 return order_;\n-160 }\n-161\n-162 // number of faces\n-_\b1_\b6_\b3 unsigned int _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be () const\n-164 {\n-165 return numberOfFaces_;\n-166 }\n-167\n-168 // number of edges\n-_\b1_\b6_\b9 unsigned int _\be_\bd_\bg_\be_\bS_\bi_\bz_\be () const\n-170 {\n-171 return numberOfEdges_;\n-172 }\n-173\n-174 // basis associated to the element\n-_\b1_\b7_\b5 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *_\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs () const\n-176 {\n-177 return testBasis_;\n-178 }\n-179\n-180 // basis associated to face f\n-_\b1_\b8_\b1 _\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-182 {\n-183 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n-184 return faceStructure_[ f ].basis_;\n-185 }\n-186\n-187 // basis associated to edge e\n-_\b1_\b8_\b8 _\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-189 {\n-190 assert( e < _\be_\bd_\bg_\be_\bS_\bi_\bz_\be() );\n-191 return edgeStructure_[ e ].basis_;\n-192 }\n-193\n-_\b1_\b9_\b4 const _\bT_\ba_\bn_\bg_\be_\bn_\bt& _\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt ( unsigned int e ) const\n-195 {\n-196 assert( e < _\be_\bd_\bg_\be_\bS_\bi_\bz_\be() );\n-197 return edgeStructure_[ e ].tangent_;\n-198 }\n-199\n-_\b2_\b0_\b0 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-201 {\n-202 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n-203 return faceStructure_[ f ].faceTangents_;\n-204 }\n-205\n-_\b2_\b0_\b6 const _\bN_\bo_\br_\bm_\ba_\bl &_\bn_\bo_\br_\bm_\ba_\bl ( unsigned int f ) const\n-207 {\n-208 assert( f < _\bf_\ba_\bc_\be_\bS_\bi_\bz_\be() );\n-209 return faceStructure_[ f ].normal_;\n-210 }\n-211\n-212 template< GeometryType::Id geometryId >\n-_\b2_\b1_\b3 void _\bb_\bu_\bi_\bl_\bd ( std::size_t _\bo_\br_\bd_\be_\br )\n-214 {\n-215 constexpr GeometryType geometry = geometryId;\n-216 order_ = _\bo_\br_\bd_\be_\br;\n-217 geometry_ = geometry;\n-218\n-219 /*\n-220 * The Nedelec parameter begins at 1.\n-221 * This is the numbering used by J.C. Nedelec himself.\n-222 * See \"Mixed Finite Elements in \\R^3\" published in 1980.\n-223 *\n-224 * This construction is based on the construction of Raviart-Thomas\n-elements.\n-225 * There the numbering starts at 0.\n-226 * Because of this we reduce the order internally by 1.\n-227 */\n-228 _\bo_\br_\bd_\be_\br--;\n-229\n-230 // if dimension == 2: order-1 on element\n-231 // if dimension == 3: order-2 on element\n-232 int requiredOrder = static_cast(_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn==3);\n-233 testBasis_ = (_\bo_\br_\bd_\be_\br > requiredOrder ? TestBasisFactory::template create<\n-geometry >( _\bo_\br_\bd_\be_\br-1-requiredOrder ) : nullptr);\n-234\n-235 const auto &refElement = ReferenceElements< Field, dimension >::general\n-( _\bt_\by_\bp_\be() );\n-236\n-237 numberOfFaces_ = refElement.size( 1 );\n-238 faceStructure_.reserve( numberOfFaces_ );\n-239\n-240 // compute the basis, tangents and normals of each face\n-241 for (std::size_t i=0; i zero(0);\n-244 _\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-245 _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs.fill(zero);\n-246\n-247 // use the first dim-1 vertices of a face to compute the tangents\n-248 auto vertices = refElement.subEntities(i,1,dim).begin();\n-249 auto vertex1 = *vertices;\n-250 for(int j=1; jvertex2)\n-259 _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs[j-1] *=-1;\n-260\n-261 vertex1 = vertex2;\n-262 }\n-263\n-264 /* For simplices or cubes of arbitrary dimension you could just use\n-265 *\n-266 * ```\n-267 * GeometryType faceGeometry = Impl::getBase(geometry_);\n-268 * TestFaceBasis *faceBasis = ( dim == 3 && order > 0 ?\n-TestFaceBasisFactory::template create< faceGeometry >( order-1 ) : nullptr);\n-269 * ```\n-270 *\n-271 * For i.e. Prisms and Pyramids in 3d this does not work because they\n-contain squares and triangles as faces.\n-272 * And depending on the dynamic face index a different face geometry is\n-needed.\n-273 *\n-274 */\n-275 _\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-276 faceStructure_.emplace_back( faceBasis, refElement.integrationOuterNormal\n-(i), _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs );\n-277 }\n-278 assert( faceStructure_.size() == numberOfFaces_ );\n-279\n-280 numberOfEdges_ = refElement.size( dim-1 );\n-281 edgeStructure_.reserve( numberOfEdges_ );\n-282\n-283 // compute the basis and tangent of each edge\n-284 for (std::size_t i=0; iv1)\n-293 std::swap(v0,v1);\n-294 auto tangent = std::move(refElement.position(v1,dim) - refElement.position\n-(v0,dim));\n-295\n-296 _\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-297 edgeStructure_.emplace_back( edgeBasis, tangent );\n-298 }\n-299 assert( edgeStructure_.size() == numberOfEdges_ );\n-300 }\n-301\n-302 private:\n-303\n-304 // helper struct for edges\n-305 struct EdgeStructure\n-306 {\n-307 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-308 : basis_( teb ), tangent_( t )\n-309 {}\n-310\n-311 _\bT_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n-312 const Dune::FieldVector< Field, dimension > tangent_;\n-313 };\n-314\n-315 template< GeometryType::Id edgeGeometryId >\n-316 struct CreateEdgeBasis\n-317 {\n-318 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-319 };\n-320\n-321 // helper struct for faces\n-322 struct FaceStructure\n-323 {\n-324 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-325 : basis_( tfb ), normal_(_\bn_\bo_\br_\bm_\ba_\bl), faceTangents_( _\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs )\n-326 {}\n-327\n-328 _\bT_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs *basis_;\n-329 const Dune::FieldVector< Field, dimension > normal_;\n-330 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs faceTangents_;\n-331 };\n-332\n-333 template< GeometryType::Id faceGeometryId >\n-334 struct CreateFaceBasis\n-335 {\n-336 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-337 };\n-338\n-339 _\bT_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs *testBasis_ = nullptr;\n-340 std::vector< FaceStructure > faceStructure_;\n-341 unsigned int numberOfFaces_;\n-342 std::vector< EdgeStructure > edgeStructure_;\n-343 unsigned int numberOfEdges_;\n-344 GeometryType geometry_;\n-345 std::size_t order_;\n-346 };\n-347\n-348\n-349\n-350 // NedelecL2Interpolation\n-351 // ----------------------------\n-352\n-358 template< unsigned int dimension, class F>\n-_\b3_\b5_\b9 class _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-360 : public _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br< F ,dimension >\n-361 {\n-362 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-363 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-364\n-365 public:\n-_\b3_\b6_\b6 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b3_\b6_\b7 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_\b6_\b8 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-369\n-_\b3_\b7_\b0 _\bN_\be_\bd_\be_\bl_\be_\bc_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn()\n-371 : _\bo_\br_\bd_\be_\br_\b_(0),\n-372 _\bs_\bi_\bz_\be_\b_(0)\n-373 {}\n-374\n-375 template< class Function, class Vector >\n-_\b3_\b7_\b6 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, Vector &coefficients ) const\n-377 -> std::enable_if_t< std::is_same< decltype(std::declval().resize\n-(1) ),void >::value,void>\n-378 {\n-379 coefficients.resize(_\bs_\bi_\bz_\be());\n-380 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-381 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-382 }\n-383\n-384 template< class Basis, class Matrix >\n-_\b3_\b8_\b5 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &matrix ) const\n-386 -> std::enable_if_t< std::is_same<\n-387 decltype(std::declval().rowPtr(0)), typename Matrix::Field* >::\n-value,void>\n-388 {\n-389 matrix.resize( _\bs_\bi_\bz_\be(), basis.size() );\n-390 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-391 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-392 }\n-393\n-_\b3_\b9_\b4 std::size_t _\bo_\br_\bd_\be_\br() const\n-395 {\n-396 return _\bo_\br_\bd_\be_\br_\b_;\n-397 }\n-_\b3_\b9_\b8 std::size_t _\bs_\bi_\bz_\be() const\n-399 {\n-400 return _\bs_\bi_\bz_\be_\b_;\n-401 }\n-402\n-403 template \n-_\b4_\b0_\b4 void _\bb_\bu_\bi_\bl_\bd( std::size_t _\bo_\br_\bd_\be_\br )\n-405 {\n-406 _\bs_\bi_\bz_\be_\b_ = 0;\n-407 _\bo_\br_\bd_\be_\br_\b_ = _\bo_\br_\bd_\be_\br;\n-408 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_.template build(_\bo_\br_\bd_\be_\br_\b_);\n-409 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-410 _\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-411\n-412 for ( unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f )\n-413 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f))\n-414 _\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-415\n-416 for ( unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e )\n-417 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e))\n-418 _\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-419 }\n-420\n-_\b4_\b2_\b1 void _\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs(std::vector< LocalKey > &keys) const\n-422 {\n-423 keys.resize(_\bs_\bi_\bz_\be());\n-424 unsigned int row = 0;\n-425 for (unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e)\n-426 {\n-427 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be())\n-428 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-429 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(e,dimension-1,i);\n-430 }\n-431 for (unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f)\n-432 {\n-433 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be())\n-434 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-435 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(f,1,i);\n-436 }\n-437\n-438 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-439 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-440 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n-441 assert( row == _\bs_\bi_\bz_\be() );\n-442 }\n-443\n-444 protected:\n-445 template< class Func, class Container, bool type >\n-_\b4_\b4_\b6 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-447 {\n-448 const Dune::GeometryType geoType( _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bd(), dimension );\n-449\n-450 std::vector testBasisVal;\n-451\n-452 for (unsigned int i=0; i<_\bs_\bi_\bz_\be(); ++i)\n-453 for (unsigned int j=0; j EdgeQuadrature;\n-460 typedef Dune::QuadratureRules EdgeQuadratureRules;\n-461\n-462 const auto &refElement = Dune::ReferenceElements< Field, dimension >::\n-general( geoType );\n-463\n-464 for (unsigned int e=0; e<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bS_\bi_\bz_\be(); ++e)\n-465 {\n-466 if (!_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bE_\bd_\bg_\be_\bB_\ba_\bs_\bi_\bs(e))\n-467 continue;\n-468 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-469\n-470 const auto &geometry = refElement.template geometry< dimension-1 >( e );\n-471 const Dune::GeometryType subGeoType( geometry.type().id(), 1 );\n-472 const EdgeQuadrature &edgeQuad = EdgeQuadratureRules::rule( subGeoType,\n-2*_\bo_\br_\bd_\be_\br_\b_+2 );\n-473\n-474 const unsigned int quadratureSize = edgeQuad.size();\n-475 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-476 {\n-477 if (dimension>1)\n-478 _\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-479 else\n-480 testBasisVal[0] = 1.;\n-481 computeEdgeDofs(row,\n-482 testBasisVal,\n-483 func.evaluate( geometry.global( edgeQuad[qi].position() ) ),\n-484 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\be_\bd_\bg_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt(e),\n-485 edgeQuad[qi].weight(),\n-486 func);\n-487 }\n-488\n-489 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-490 }\n-491\n-492 // face dofs:\n-493 typedef Dune::QuadratureRule<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadrature;\n-494 typedef Dune::QuadratureRules<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadratureRules;\n-495\n-496 for (unsigned int f=0; f<_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bS_\bi_\bz_\be(); ++f)\n-497 {\n-498 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f))\n-499 {\n-500 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-501\n-502 const auto &geometry = refElement.template geometry< 1 >( f );\n-503 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );\n-504 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType,\n-2*_\bo_\br_\bd_\be_\br_\b_+2 );\n-505\n-506 const unsigned int quadratureSize = faceQuad.size();\n-507 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-508 {\n-509 if (dimension>1)\n-510 _\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-511 else\n-512 testBasisVal[0] = 1.;\n-513\n-514 computeFaceDofs( row,\n-515 testBasisVal,\n-516 func.evaluate( geometry.global( faceQuad[qi].position() ) ),\n-517 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bf_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs(f),\n-518 _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bn_\bo_\br_\bm_\ba_\bl(f),\n-519 faceQuad[qi].weight(),\n-520 func);\n-521 }\n-522\n-523 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-524 }\n-525 }\n-526\n-527 // element dofs\n-528 if (_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-529 {\n-530 testBasisVal.resize(_\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be());\n-531\n-532 typedef Dune::QuadratureRule Quadrature;\n-533 typedef Dune::QuadratureRules QuadratureRules;\n-534 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*_\bo_\br_\bd_\be_\br_\b_+1 );\n-535\n-536 const unsigned int quadratureSize = elemQuad.size();\n-537 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-538 {\n-539 _\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-540 computeInteriorDofs(row,\n-541 testBasisVal,\n-542 func.evaluate(elemQuad[qi].position()),\n-543 elemQuad[qi].weight(),\n-544 func );\n-545 }\n-546\n-547 row += _\bb_\bu_\bi_\bl_\bd_\be_\br_\b_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension;\n-548 }\n-549 assert(row==_\bs_\bi_\bz_\be());\n-550 }\n-551\n-552 private:\n-562 template \n-563 void computeEdgeDofs (unsigned int startRow,\n-564 const MVal &mVal,\n-565 const NedVal &nedVal,\n-566 const FieldVector &tangent,\n-567 const _\bF_\bi_\be_\bl_\bd &weight,\n-568 Matrix &matrix) const\n-569 {\n-570 const unsigned int endRow = startRow+mVal.size();\n-571 typename NedVal::const_iterator nedIter = nedVal.begin();\n-572 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n-573 {\n-574 _\bF_\bi_\be_\bl_\bd cFactor = (*nedIter)*tangent;\n-575 typename MVal::const_iterator mIter = mVal.begin();\n-576 for (unsigned int row = startRow; row!=endRow; ++mIter, ++row )\n-577 matrix.add(row,col, (weight*cFactor)*(*mIter) );\n-578\n-579 assert( mIter == mVal.end() );\n-580 }\n-581 }\n-582\n-593 template \n-594 void computeFaceDofs (unsigned int startRow,\n-595 const MVal &mVal,\n-596 const NedVal &nedVal,\n-597 const _\bF_\ba_\bc_\be_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bs& faceTangents,\n-598 const FieldVector &normal,\n-599 const _\bF_\bi_\be_\bl_\bd &weight,\n-600 Matrix &matrix) const\n-601 {\n-602 const unsigned int endRow = startRow+mVal.size()*(dimension-1);\n-603 typename NedVal::const_iterator nedIter = nedVal.begin();\n-604 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n-605 {\n-606 auto const& u=*nedIter;\n-607 auto const& n=normal;\n-608 FieldVector nedTimesNormal = { u[1]*n[2]-u[2]*n[1],\n-609 u[2]*n[0]-u[0]*n[2],\n-610 u[0]*n[1]-u[1]*n[0]};\n-611 typename MVal::const_iterator mIter = mVal.begin();\n-612 for (unsigned int row = startRow; row!=endRow; ++mIter)\n-613 {\n-614 for(int i=0; i\n-635 void computeInteriorDofs (unsigned int startRow,\n-636 const MVal &mVal,\n-637 const NedVal &nedVal,\n-638 _\bF_\bi_\be_\bl_\bd weight,\n-639 Matrix &matrix) const\n-640 {\n-641 const unsigned int endRow = startRow+mVal.size()*dimension;\n-642 typename NedVal::const_iterator nedIter = nedVal.begin();\n-643 for ( unsigned int col = 0; col < nedVal.size() ; ++nedIter,++col)\n-644 {\n-645 typename MVal::const_iterator mIter = mVal.begin();\n-646 for (unsigned int row = startRow; row!=endRow; ++mIter,row+=dimension )\n-647 for (unsigned int i=0; i\n-_\b6_\b6_\b1 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-662 {\n-_\b6_\b6_\b3 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_\b4 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_\b6_\b5 typedef std::size_t _\bK_\be_\by;\n-_\b6_\b6_\b6 typedef typename std::remove_const::type _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt;\n-667\n-668 template \n-_\b6_\b6_\b9 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n-670 {\n-671 if ( !supports(key) )\n-672 return 0;\n-673 _\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-674 interpol->template build(key);\n-675 return interpol;\n-676 }\n-677\n-678 template \n-_\b6_\b7_\b9 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs( const _\bK_\be_\by &key )\n-680 {\n-681 GeometryType gt = geometryId;\n-682 return gt.isTriangle() || gt.isTetrahedron() ;\n-683 }\n-_\b6_\b8_\b4 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-685 };\n-686\n-687} // namespace Dune\n-688\n-689#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-_\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-_\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:23\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: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_\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: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:_\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:664\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:663\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:665\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:679\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:666\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:684\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:38\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:43\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: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:54\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:70\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: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:_\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:87\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:72\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:71\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:92\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:111\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:188\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:138\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:152\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:116\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: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:_\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:120\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:181\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:124\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: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:_\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:213\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: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:_\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: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:_\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:200\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:163\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:175\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:131\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: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:_\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:194\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:157\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:169\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:147\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:112\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:206\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:361\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:368\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:366\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-auto interpolate(const Function &function, Vector &coefficients) const -> std::\n-enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void\n->::value, void >\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:376\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:398\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:446\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:656\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:367\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-auto interpolate(const Basis &basis, Matrix &matrix) const -> std::enable_if_t<\n-std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::\n-Field * >::value, void >\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:385\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:657\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: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:_\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:404\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:394\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:421\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:655\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:22\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:24\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+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/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: nedelec1stkindsimplex.hh File Reference\n+dune-localfunctions: rannachertureklocalcoefficients.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-
    nedelec1stkindsimplex.hh File Reference
    \n+
    rannachertureklocalcoefficients.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/localinterpolation.hh>
    \n-#include <dune/localfunctions/common/localkey.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 \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...
    struct  Dune::RannacherTurekLocalCoefficients< d >
     layout for Rannacher-Turek elements 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,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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-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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 _\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+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/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: nedelec1stkindsimplex.hh Source File\n+dune-localfunctions: rannachertureklocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,426 +70,96 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    nedelec1stkindsimplex.hh
    \n+
    rannachertureklocalcoefficients.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 (C) 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_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n-
    11#include <dune/common/fvector.hh>
    \n+
    8#include <algorithm>
    \n+
    9#include <array>
    \n+
    10#include <cassert>
    \n+
    11#include <cstddef>
    \n
    12
    \n-
    13#include <dune/geometry/referenceelements.hh>
    \n-
    14#include <dune/geometry/type.hh>
    \n-
    15
    \n-\n-\n-
    18#include <dune/localfunctions/common/localinterpolation.hh> // For deprecated makeFunctionWithCallOperator
    \n-\n-
    20
    \n-
    21namespace Dune
    \n-
    22{
    \n-
    23namespace Impl
    \n-
    24{
    \n-
    35 template<class D, class R, int dim, int k>
    \n-
    36 class Nedelec1stKindSimplexLocalBasis
    \n-
    37 {
    \n-
    38 // Number of edges of the reference simplex
    \n-
    39 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n-
    40
    \n-
    41 public:
    \n-
    42 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
    \n-
    43 R,dim,FieldVector<R,dim>,
    \n-
    44 FieldMatrix<R,dim,dim> >;
    \n-
    45
    \n-
    52 Nedelec1stKindSimplexLocalBasis()
    \n-
    53 {
    \n-
    54 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    24 template< unsigned int d >
    \n+
    \n+\n+
    26 {
    \n+
    \n+\n+
    28 {
    \n+
    29 for( std::size_t i = 0; i < 2*d; ++i )
    \n+
    30 localKeys_[ i ] = LocalKey( i, 1, 0 );
    \n+
    31 }
    \n+
    \n+
    32
    \n+
    \n+\n+
    34 {
    \n+
    35 (*this) = other;
    \n+
    36 }
    \n+
    \n+
    37
    \n+
    \n+\n+
    39 {
    \n+
    40 std::copy( other.localKeys_.begin(), other.localKeys_.end(), localKeys_.begin() );
    \n+
    41 return *this;
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+
    45 std::size_t size () const
    \n+
    46 {
    \n+
    47 return 2*d;
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    \n+
    51 const LocalKey &localKey ( std::size_t i ) const
    \n+
    52 {
    \n+
    53 assert( i < 2*d );
    \n+
    54 return localKeys_[ i ];
    \n
    55 }
    \n+
    \n
    56
    \n-
    59 Nedelec1stKindSimplexLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n-
    60 : Nedelec1stKindSimplexLocalBasis()
    \n-
    61 {
    \n-
    62 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
    \n-
    63 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
    \n-
    64 }
    \n-
    65
    \n-
    67 static constexpr unsigned int size()
    \n-
    68 {
    \n-
    69 static_assert(dim==2 || dim==3, "Nedelec shape functions are implemented only for 2d and 3d simplices.");
    \n-
    70 if (dim==2)
    \n-
    71 return k * (k+2);
    \n-
    72 if (dim==3)
    \n-
    73 return k * (k+2) * (k+3) / 2;
    \n-
    74 }
    \n-
    75
    \n-
    81 void evaluateFunction(const typename Traits::DomainType& in,
    \n-
    82 std::vector<typename Traits::RangeType>& out) const
    \n-
    83 {
    \n-
    84 static_assert(k==1, "Evaluating N\u00e9d\u00e9lec shape functions is implemented only for first order.");
    \n-
    85 out.resize(size());
    \n-
    86
    \n-
    87 if (dim==2)
    \n-
    88 {
    \n-
    89 // First-order N\u00e9d\u00e9lec shape functions on a triangle are of the form
    \n-
    90 //
    \n-
    91 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R
    \n-
    92 out[0] = {D(1) - in[1], in[0]};
    \n-
    93 out[1] = {in[1], -in[0]+D(1)};
    \n-
    94 out[2] = {-in[1], in[0]};
    \n-
    95 }
    \n-
    96
    \n-
    97 if constexpr (dim==3)
    \n-
    98 {
    \n-
    99 // First-order N\u00e9d\u00e9lec shape functions on a tetrahedron are of the form
    \n-
    100 //
    \n-
    101 // a + b \\times x, a, b \\in R^3
    \n-
    102 //
    \n-
    103 // The following coefficients create the six basis vectors
    \n-
    104 // that are dual to the edge degrees of freedom:
    \n-
    105 //
    \n-
    106 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}
    \n-
    107 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}
    \n-
    108 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}
    \n-
    109 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}
    \n-
    110 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}
    \n-
    111 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}
    \n-
    112 //
    \n-
    113 // The following implementation uses these values, and simply
    \n-
    114 // skips all the zeros.
    \n-
    115
    \n-
    116 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };
    \n-
    117 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};
    \n-
    118 out[2] = { - in[1] , in[0] , 0 };
    \n-
    119 out[3] = { in[2], in[2], 1 - in[0] - in[1]};
    \n-
    120 out[4] = { -in[2], 0 , in[0] };
    \n-
    121 out[5] = { 0 , -in[2], in[1]};
    \n-
    122 }
    \n-
    123
    \n-
    124 for (std::size_t i=0; i<out.size(); i++)
    \n-
    125 out[i] *= edgeOrientation_[i];
    \n-
    126 }
    \n-
    127
    \n-
    133 void evaluateJacobian(const typename Traits::DomainType& in,
    \n-
    134 std::vector<typename Traits::JacobianType>& out) const
    \n-
    135 {
    \n-
    136 out.resize(size());
    \n-
    137 if (dim==2)
    \n-
    138 {
    \n-
    139 out[0][0] = { 0, -1};
    \n-
    140 out[0][1] = { 1, 0};
    \n-
    141
    \n-
    142 out[1][0] = { 0, 1};
    \n-
    143 out[1][1] = {-1, 0};
    \n-
    144
    \n-
    145 out[2][0] = { 0, -1};
    \n-
    146 out[2][1] = { 1, 0};
    \n-
    147 }
    \n-
    148 if (dim==3)
    \n-
    149 {
    \n-
    150 out[0][0] = { 0,-1,-1};
    \n-
    151 out[0][1] = { 1, 0, 0};
    \n-
    152 out[0][2] = { 1, 0, 0};
    \n-
    153
    \n-
    154 out[1][0] = { 0, 1, 0};
    \n-
    155 out[1][1] = {-1, 0, -1};
    \n-
    156 out[1][2] = { 0, 1, 0};
    \n-
    157
    \n-
    158 out[2][0] = { 0, -1, 0};
    \n-
    159 out[2][1] = { 1, 0, 0};
    \n-
    160 out[2][2] = { 0, 0, 0};
    \n-
    161
    \n-
    162 out[3][0] = { 0, 0, 1};
    \n-
    163 out[3][1] = { 0, 0, 1};
    \n-
    164 out[3][2] = {-1, -1, 0};
    \n-
    165
    \n-
    166 out[4][0] = { 0, 0, -1};
    \n-
    167 out[4][1] = { 0, 0, 0};
    \n-
    168 out[4][2] = { 1, 0, 0};
    \n-
    169
    \n-
    170 out[5][0] = { 0, 0, 0};
    \n-
    171 out[5][1] = { 0, 0, -1};
    \n-
    172 out[5][2] = { 0, 1, 0};
    \n-
    173 }
    \n-
    174
    \n-
    175 for (std::size_t i=0; i<out.size(); i++)
    \n-
    176 out[i] *= edgeOrientation_[i];
    \n-
    177
    \n-
    178 }
    \n-
    179
    \n-
    186 void partial(const std::array<unsigned int, dim>& order,
    \n-
    187 const typename Traits::DomainType& in,
    \n-
    188 std::vector<typename Traits::RangeType>& out) const
    \n-
    189 {
    \n-
    190 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    191 if (totalOrder == 0) {
    \n-
    192 evaluateFunction(in, out);
    \n-
    193 } else if (totalOrder == 1) {
    \n-
    194 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    195 out.resize(size());
    \n-
    196
    \n-
    197 if (dim==2)
    \n-
    198 {
    \n-
    199 if (direction==0)
    \n-
    200 {
    \n-
    201 out[0] = {0, 1};
    \n-
    202 out[1] = {0, -1};
    \n-
    203 out[2] = {0, 1};
    \n-
    204 }
    \n-
    205 else
    \n-
    206 {
    \n-
    207 out[0] = {-1, 0};
    \n-
    208 out[1] = { 1, 0};
    \n-
    209 out[2] = {-1, 0};
    \n-
    210 }
    \n-
    211 }
    \n-
    212
    \n-
    213 if (dim==3)
    \n-
    214 {
    \n-
    215 switch (direction)
    \n-
    216 {
    \n-
    217 case 0:
    \n-
    218 out[0] = { 0, 1, 1};
    \n-
    219 out[1] = { 0,-1, 0};
    \n-
    220 out[2] = { 0, 1, 0};
    \n-
    221 out[3] = { 0, 0,-1};
    \n-
    222 out[4] = { 0, 0, 1};
    \n-
    223 out[5] = { 0, 0, 0};
    \n-
    224 break;
    \n-
    225
    \n-
    226 case 1:
    \n-
    227 out[0] = {-1, 0, 0};
    \n-
    228 out[1] = { 1, 0, 1};
    \n-
    229 out[2] = {-1, 0, 0};
    \n-
    230 out[3] = { 0, 0,-1};
    \n-
    231 out[4] = { 0, 0, 0};
    \n-
    232 out[5] = { 0, 0, 1};
    \n-
    233 break;
    \n-
    234
    \n-
    235 case 2:
    \n-
    236 out[0] = {-1, 0, 0};
    \n-
    237 out[1] = { 0,-1, 0};
    \n-
    238 out[2] = { 0, 0, 0};
    \n-
    239 out[3] = { 1, 1, 0};
    \n-
    240 out[4] = {-1, 0, 0};
    \n-
    241 out[5] = { 0,-1, 0};
    \n-
    242 break;
    \n-
    243 }
    \n-
    244 }
    \n-
    245
    \n-
    246 for (std::size_t i=0; i<out.size(); i++)
    \n-
    247 out[i] *= edgeOrientation_[i];
    \n-
    248
    \n-
    249 } else {
    \n-
    250 out.resize(size());
    \n-
    251 for (std::size_t i = 0; i < size(); ++i)
    \n-
    252 for (std::size_t j = 0; j < dim; ++j)
    \n-
    253 out[i][j] = 0;
    \n-
    254 }
    \n-
    255
    \n-
    256 }
    \n-
    257
    \n-
    259 unsigned int order() const
    \n-
    260 {
    \n-
    261 return k;
    \n-
    262 }
    \n-
    263
    \n-
    264 private:
    \n-
    265
    \n-
    266 // Orientations of the simplex edges
    \n-
    267 std::array<R,numberOfEdges> edgeOrientation_;
    \n-
    268 };
    \n-
    269
    \n-
    270
    \n-
    275 template <int dim, int k>
    \n-
    276 class Nedelec1stKindSimplexLocalCoefficients
    \n-
    277 {
    \n-
    278 public:
    \n-
    280 Nedelec1stKindSimplexLocalCoefficients ()
    \n-
    281 : localKey_(size())
    \n-
    282 {
    \n-
    283 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n-
    284 // Assign all degrees of freedom to edges
    \n-
    285 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n-
    286 for (std::size_t i=0; i<size(); i++)
    \n-
    287 localKey_[i] = LocalKey(i,dim-1,0);
    \n-
    288 }
    \n-
    289
    \n-
    291 std::size_t size() const
    \n-
    292 {
    \n-
    293 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d simplices.");
    \n-
    294 return (dim==2) ? k * (k+2)
    \n-
    295 : k * (k+2) * (k+3) / 2;
    \n-
    296 }
    \n-
    297
    \n-
    300 const LocalKey& localKey (std::size_t i) const
    \n-
    301 {
    \n-
    302 return localKey_[i];
    \n-
    303 }
    \n-
    304
    \n-
    305 private:
    \n-
    306 std::vector<LocalKey> localKey_;
    \n-
    307 };
    \n-
    308
    \n-
    313 template<class LB>
    \n-
    314 class Nedelec1stKindSimplexLocalInterpolation
    \n-
    315 {
    \n-
    316 static constexpr auto dim = LB::Traits::dimDomain;
    \n-
    317 static constexpr auto size = LB::size();
    \n-
    318
    \n-
    319 // Number of edges of the reference simplex
    \n-
    320 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n-
    321
    \n-
    322 public:
    \n-
    323
    \n-
    325 Nedelec1stKindSimplexLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n-
    326 {
    \n-
    327 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::simplex(dim));
    \n-
    328
    \n-
    329 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    330 m_[i] = refElement.position(i,dim-1);
    \n-
    331
    \n-
    332 for (std::size_t i=0; i<numberOfEdges; i++)
    \n-
    333 {
    \n-
    334 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n-
    335 auto v0 = *vertexIterator;
    \n-
    336 auto v1 = *(++vertexIterator);
    \n-
    337 // By default, edges point from the vertex with the smaller index
    \n-
    338 // to the vertex with the larger index.
    \n-
    339 if (v0>v1)
    \n-
    340 std::swap(v0,v1);
    \n-
    341 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n-
    342 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n-
    343 }
    \n-
    344 }
    \n-
    345
    \n-
    351 template<typename F, typename C>
    \n-
    352 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    353 {
    \n-
    354 out.resize(size);
    \n-
    355 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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+
    57 private:
    \n+
    58 std::array< LocalKey, 2*d > localKeys_;
    \n+
    59 };
    \n+
    \n+
    60
    \n+
    61} // namespace Dune
    \n+
    62
    \n+
    63#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    D DomainType
    domain type
    Definition common/localbasis.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-
    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+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    layout for Rannacher-Turek elements
    Definition rannachertureklocalcoefficients.hh:26
    \n+
    RannacherTurekLocalCoefficients()
    Definition rannachertureklocalcoefficients.hh:27
    \n+
    RannacherTurekLocalCoefficients(const RannacherTurekLocalCoefficients &other)
    Definition rannachertureklocalcoefficients.hh:33
    \n+
    RannacherTurekLocalCoefficients & operator=(const RannacherTurekLocalCoefficients &other)
    Definition rannachertureklocalcoefficients.hh:38
    \n+
    const LocalKey & localKey(std::size_t i) const
    map index i to local key
    Definition rannachertureklocalcoefficients.hh:51
    \n+
    std::size_t size() const
    number of coefficients
    Definition rannachertureklocalcoefficients.hh:45
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,446 +1,96 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\bn_\bn_\ba_\bc_\bh_\be_\br_\bt_\bu_\br_\be_\bk\n+rannachertureklocalcoefficients.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 (C) 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_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH\n+6#define DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_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\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh> // For deprecated\n-makeFunctionWithCallOperator\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-35 template\n-36 class Nedelec1stKindSimplexLocalBasis\n-37 {\n-38 // Number of edges of the reference simplex\n-39 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n-40\n-41 public:\n-42 using Traits = LocalBasisTraits,\n-43 R,dim,FieldVector,\n-44 FieldMatrix >;\n-45\n-52 Nedelec1stKindSimplexLocalBasis()\n-53 {\n-54 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\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+24 template< 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_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+26 {\n+_\b2_\b7 _\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+28 {\n+29 for( std::size_t i = 0; i < 2*d; ++i )\n+30 localKeys_[ i ] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( i, 1, 0 );\n+31 }\n+32\n+_\b3_\b3 _\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+34 {\n+35 (*this) = other;\n+36 }\n+37\n+_\b3_\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 &_\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+39 {\n+40 std::copy( other.localKeys_.begin(), other.localKeys_.end(),\n+localKeys_.begin() );\n+41 return *this;\n+42 }\n+43\n+_\b4_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+46 {\n+47 return 2*d;\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 assert( i < 2*d );\n+54 return localKeys_[ i ];\n 55 }\n 56\n-59 Nedelec1stKindSimplexLocalBasis(std::bitset edgeOrientation)\n-60 : Nedelec1stKindSimplexLocalBasis()\n-61 {\n-62 for (std::size_t i=0; i& out) const\n-83 {\n-84 static_assert(k==1, \"Evaluating N\u00c3\u00a9d\u00c3\u00a9lec shape functions is implemented\n-only for first order.\");\n-85 out.resize(size());\n-86\n-87 if (dim==2)\n-88 {\n-89 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a triangle are of the form\n-90 //\n-91 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R\n-92 out[0] = {D(1) - in[1], in[0]};\n-93 out[1] = {in[1], -in[0]+D(1)};\n-94 out[2] = {-in[1], in[0]};\n-95 }\n-96\n-97 if constexpr (dim==3)\n-98 {\n-99 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a tetrahedron are of the form\n-100 //\n-101 // a + b \\times x, a, b \\in R^3\n-102 //\n-103 // The following coefficients create the six basis vectors\n-104 // that are dual to the edge degrees of freedom:\n-105 //\n-106 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}\n-107 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}\n-108 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}\n-109 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}\n-110 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}\n-111 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}\n-112 //\n-113 // The following implementation uses these values, and simply\n-114 // skips all the zeros.\n-115\n-116 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };\n-117 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};\n-118 out[2] = { - in[1] , in[0] , 0 };\n-119 out[3] = { in[2], in[2], 1 - in[0] - in[1]};\n-120 out[4] = { -in[2], 0 , in[0] };\n-121 out[5] = { 0 , -in[2], in[1]};\n-122 }\n-123\n-124 for (std::size_t i=0; i& out) const\n-135 {\n-136 out.resize(size());\n-137 if (dim==2)\n-138 {\n-139 out[0][0] = { 0, -1};\n-140 out[0][1] = { 1, 0};\n-141\n-142 out[1][0] = { 0, 1};\n-143 out[1][1] = {-1, 0};\n-144\n-145 out[2][0] = { 0, -1};\n-146 out[2][1] = { 1, 0};\n-147 }\n-148 if (dim==3)\n-149 {\n-150 out[0][0] = { 0,-1,-1};\n-151 out[0][1] = { 1, 0, 0};\n-152 out[0][2] = { 1, 0, 0};\n-153\n-154 out[1][0] = { 0, 1, 0};\n-155 out[1][1] = {-1, 0, -1};\n-156 out[1][2] = { 0, 1, 0};\n-157\n-158 out[2][0] = { 0, -1, 0};\n-159 out[2][1] = { 1, 0, 0};\n-160 out[2][2] = { 0, 0, 0};\n-161\n-162 out[3][0] = { 0, 0, 1};\n-163 out[3][1] = { 0, 0, 1};\n-164 out[3][2] = {-1, -1, 0};\n-165\n-166 out[4][0] = { 0, 0, -1};\n-167 out[4][1] = { 0, 0, 0};\n-168 out[4][2] = { 1, 0, 0};\n-169\n-170 out[5][0] = { 0, 0, 0};\n-171 out[5][1] = { 0, 0, -1};\n-172 out[5][2] = { 0, 1, 0};\n-173 }\n-174\n-175 for (std::size_t i=0; i& order,\n-187 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-188 std::vector& out) const\n-189 {\n-190 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-191 if (totalOrder == 0) {\n-192 evaluateFunction(in, out);\n-193 } else if (totalOrder == 1) {\n-194 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-195 out.resize(size());\n-196\n-197 if (dim==2)\n-198 {\n-199 if (direction==0)\n-200 {\n-201 out[0] = {0, 1};\n-202 out[1] = {0, -1};\n-203 out[2] = {0, 1};\n-204 }\n-205 else\n-206 {\n-207 out[0] = {-1, 0};\n-208 out[1] = { 1, 0};\n-209 out[2] = {-1, 0};\n-210 }\n-211 }\n-212\n-213 if (dim==3)\n-214 {\n-215 switch (direction)\n-216 {\n-217 case 0:\n-218 out[0] = { 0, 1, 1};\n-219 out[1] = { 0,-1, 0};\n-220 out[2] = { 0, 1, 0};\n-221 out[3] = { 0, 0,-1};\n-222 out[4] = { 0, 0, 1};\n-223 out[5] = { 0, 0, 0};\n-224 break;\n-225\n-226 case 1:\n-227 out[0] = {-1, 0, 0};\n-228 out[1] = { 1, 0, 1};\n-229 out[2] = {-1, 0, 0};\n-230 out[3] = { 0, 0,-1};\n-231 out[4] = { 0, 0, 0};\n-232 out[5] = { 0, 0, 1};\n-233 break;\n-234\n-235 case 2:\n-236 out[0] = {-1, 0, 0};\n-237 out[1] = { 0,-1, 0};\n-238 out[2] = { 0, 0, 0};\n-239 out[3] = { 1, 1, 0};\n-240 out[4] = {-1, 0, 0};\n-241 out[5] = { 0,-1, 0};\n-242 break;\n-243 }\n-244 }\n-245\n-246 for (std::size_t i=0; i edgeOrientation_;\n-268 };\n-269\n-270\n-275 template \n-276 class Nedelec1stKindSimplexLocalCoefficients\n-277 {\n-278 public:\n-280 Nedelec1stKindSimplexLocalCoefficients ()\n-281 : localKey_(size())\n-282 {\n-283 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n-implemented.\");\n-284 // Assign all degrees of freedom to edges\n-285 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n-286 for (std::size_t i=0; i localKey_;\n-307 };\n-308\n-313 template\n-314 class Nedelec1stKindSimplexLocalInterpolation\n-315 {\n-316 static constexpr auto dim = LB::Traits::dimDomain;\n-317 static constexpr auto size = LB::size();\n-318\n-319 // Number of edges of the reference simplex\n-320 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n-321\n-322 public:\n-323\n-325 Nedelec1stKindSimplexLocalInterpolation (std::bitset s = 0)\n-326 {\n-327 auto refElement = Dune::referenceElement(GeometryTypes::simplex\n-(dim));\n-328\n-329 for (std::size_t i=0; iv1)\n-340 std::swap(v0,v1);\n-341 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n-342 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n-343 }\n-344 }\n-345\n-351 template\n-352 void interpolate (const F& ff, std::vector& out) const\n-353 {\n-354 out.resize(size);\n-355 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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+57 private:\n+58 std::array< LocalKey, 2*d > localKeys_;\n+59 };\n+60\n+61} // namespace Dune\n+62\n+63#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_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: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:_\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-_\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_\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:23\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:26\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: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(const RannacherTurekLocalCoefficients &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:33\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: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_\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:51\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: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/a00071.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: monomiallocalbasis.hh File Reference\n+dune-localfunctions: monomiallocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -72,48 +72,35 @@\n
  • dune
  • localfunctions
  • monomial
  • \n \n \n
    \n \n-
    monomiallocalbasis.hh File Reference
    \n+
    monomiallocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <cassert>
    \n-#include <numeric>
    \n+
    #include <vector>
    \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/geometry/type.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.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 >
     Constant shape function. More...
    class  Dune::MonomialLocalInterpolation< LB, size >
     
    \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": "@@ -2,36 +2,23 @@\n Loading...\n Searching...\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 _\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-#include \n+monomiallocalinterpolation.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 \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_\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_\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 Constant shape function. _\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-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/a00071_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00071_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: monomiallocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -74,300 +74,116 @@\n \n \n
    \n
    \n-
    monomiallocalbasis.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 (C) 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_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_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+
    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+\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+
    19
    \n+
    20 template<class LB, unsigned int size>
    \n+
    \n+\n+
    22 {
    \n+
    23 typedef typename LB::Traits::DomainType D;
    \n+
    24 typedef typename LB::Traits::DomainFieldType DF;
    \n+
    25 static const int dimD=LB::Traits::dimDomain;
    \n+
    26 typedef typename LB::Traits::RangeType R;
    \n+
    27 typedef typename LB::Traits::RangeFieldType RF;
    \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-
    \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-
    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-
    199 template<class D, class R, unsigned int d, unsigned int p>
    \n-
    \n-\n-
    201 {
    \n-
    202 // Helper: Number of shape functions for a k-th order element in dimension dd
    \n-
    203 static constexpr unsigned int size (int dd, int k)
    \n-
    204 {
    \n-
    205 if (dd==0 || k==0)
    \n-
    206 return 1;
    \n-
    207 return size(dd,k-1) + size(dd-1,k);
    \n-
    208 }
    \n-
    209
    \n-
    210 public:
    \n-
    212 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n-
    213 Dune::FieldMatrix<R,1,d> > Traits;
    \n-
    214
    \n-
    \n-
    216 static constexpr unsigned int size ()
    \n-
    217 {
    \n-
    218 return size(d,p);
    \n-
    219 }
    \n-
    \n-
    220
    \n-
    \n-
    222 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    223 std::vector<typename Traits::RangeType>& out) const
    \n-
    224 {
    \n-
    225 out.resize(size());
    \n-
    226 int index = 0;
    \n-
    227 std::array<unsigned int, d> derivatives;
    \n-
    228 std::fill(derivatives.begin(), derivatives.end(), 0);
    \n-\n-
    230 for (unsigned int lp = 0; lp <= p; ++lp)
    \n-
    231 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n-
    232 }
    \n-
    \n-
    233
    \n-
    \n-
    239 inline void partial(const std::array<unsigned int,d>& order,
    \n-
    240 const typename Traits::DomainType& in,
    \n-
    241 std::vector<typename Traits::RangeType>& out) const
    \n-
    242 {
    \n-
    243 out.resize(size());
    \n-
    244 int index = 0;
    \n-\n-
    246 for (unsigned int lp = 0; lp <= p; ++lp)
    \n-
    247 MonomImp::Evaluate<Traits, d>::eval(in, order, 1, lp, index, access);
    \n-
    248 }
    \n-
    \n-
    249
    \n-
    251 inline void
    \n-
    \n-
    252 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    253 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    254 {
    \n-
    255 out.resize(size());
    \n-
    256 std::array<unsigned int, d> derivatives;
    \n-
    257 for(unsigned int i = 0; i < d; ++i)
    \n-
    258 derivatives[i] = 0;
    \n-
    259 for(unsigned int i = 0; i < d; ++i)
    \n-
    260 {
    \n-
    261 derivatives[i] = 1;
    \n-
    262 int index = 0;
    \n-\n-
    264 for(unsigned int lp = 0; lp <= p; ++lp)
    \n-
    265 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n-
    266 derivatives[i] = 0;
    \n-
    267 }
    \n-
    268 }
    \n-
    \n-
    269
    \n-
    \n-
    271 unsigned int order () const
    \n-
    272 {
    \n-
    273 return p;
    \n-
    274 }
    \n-
    \n-
    275 };
    \n-
    \n-
    276
    \n-
    277}
    \n-
    278
    \n-
    279#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n+
    29 typedef QuadratureRule<DF,dimD> QR;
    \n+
    30 typedef typename QR::iterator QRiterator;
    \n+
    31
    \n+
    32 public:
    \n+
    \n+
    33 MonomialLocalInterpolation (const GeometryType &gt_,
    \n+
    34 const LB &lb_)
    \n+
    35 : gt(gt_), lb(lb_), Minv(0)
    \n+
    36 , qr(QuadratureRules<DF,dimD>::rule(gt, 2*lb.order()))
    \n+
    37 {
    \n+
    38 // Compute inverse of the mass matrix of the local basis, and store it in Minv
    \n+
    39 if(size != lb.size())
    \n+
    40 DUNE_THROW(Exception, "size template parameter does not match size of "
    \n+
    41 "local basis");
    \n+
    42
    \n+
    43 const QRiterator qrend = qr.end();
    \n+
    44 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n+
    45 std::vector<R> base;
    \n+
    46 lb.evaluateFunction(qrit->position(),base);
    \n+
    47
    \n+
    48 for(unsigned int i = 0; i < size; ++i)
    \n+
    49 for(unsigned int j = 0; j < size; ++j)
    \n+
    50 Minv[i][j] += qrit->weight() * base[i] * base[j];
    \n+
    51 }
    \n+
    52 Minv.invert();
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    62 template<typename F, typename C>
    \n+
    \n+
    63 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    64 {
    \n+
    65 using DomainType = std::decay_t<decltype(qr.begin()->position())>;
    \n+
    66
    \n+
    67 auto&& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n+
    68
    \n+
    69 out.clear();
    \n+
    70 out.resize(size, 0);
    \n+
    71
    \n+
    72 const QRiterator qrend = qr.end();
    \n+
    73 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n+
    74 //TODO: mass matrix
    \n+
    75 R y = f(qrit->position());
    \n+
    76
    \n+
    77 std::vector<R> base;
    \n+
    78 lb.evaluateFunction(qrit->position(),base);
    \n+
    79
    \n+
    80 for(unsigned int i = 0; i < size; ++i)
    \n+
    81 for(unsigned int j = 0; j < size; ++j)
    \n+
    82 out[i] += Minv[i][j] * qrit->weight() * y * base[j];
    \n+
    83 }
    \n+
    84 }
    \n+
    \n+
    85
    \n+
    86 private:
    \n+
    87 GeometryType gt;
    \n+
    88 const LB &lb;
    \n+
    89 FieldMatrix<RF, size, size> Minv;
    \n+
    90 const QR &qr;
    \n+
    91 };
    \n+
    \n+
    92
    \n+
    93}
    \n+
    94
    \n+
    95#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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-
    Constant shape function.
    Definition monomiallocalbasis.hh:201
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition monomiallocalbasis.hh:271
    \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:239
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition monomiallocalbasis.hh:252
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition monomiallocalbasis.hh:222
    \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:213
    \n-
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:216
    \n+
    Definition monomiallocalinterpolation.hh:22
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition monomiallocalinterpolation.hh:63
    \n+
    MonomialLocalInterpolation(const GeometryType &gt_, const LB &lb_)
    Definition monomiallocalinterpolation.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,318 +1,113 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_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+8#include \n+9\n+10#include \n+11#include \n+12\n+13#include \n+14#include \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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+19\n+20 template\n+_\b2_\b1 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+22 {\n+23 typedef typename LB::Traits::DomainType D;\n+24 typedef typename LB::Traits::DomainFieldType DF;\n+25 static const int dimD=LB::Traits::dimDomain;\n+26 typedef typename LB::Traits::RangeType R;\n+27 typedef typename LB::Traits::RangeFieldType RF;\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-199 template\n-_\b2_\b0_\b0 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-201 {\n-202 // Helper: Number of shape functions for a k-th order element in dimension\n-dd\n-203 static constexpr unsigned int _\bs_\bi_\bz_\be (int dd, int k)\n-204 {\n-205 if (dd==0 || k==0)\n-206 return 1;\n-207 return _\bs_\bi_\bz_\be(dd,k-1) + _\bs_\bi_\bz_\be(dd-1,k);\n-208 }\n-209\n-210 public:\n-212 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_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-214\n-_\b2_\b1_\b6 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n-217 {\n-218 return _\bs_\bi_\bz_\be(d,p);\n-219 }\n-220\n-_\b2_\b2_\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-223 std::vector& out) const\n-224 {\n-225 out.resize(_\bs_\bi_\bz_\be());\n-226 int index = 0;\n-227 std::array derivatives;\n-228 std::fill(derivatives.begin(), derivatives.end(), 0);\n-229 _\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-230 for (unsigned int lp = 0; lp <= p; ++lp)\n-231 _\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-232 }\n-233\n-_\b2_\b3_\b9 inline void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n-240 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n-241 std::vector& out) const\n-242 {\n-243 out.resize(_\bs_\bi_\bz_\be());\n-244 int index = 0;\n-245 _\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-246 for (unsigned int lp = 0; lp <= p; ++lp)\n-247 _\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-248 }\n-249\n-251 inline void\n-_\b2_\b5_\b2 _\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-253 std::vector& out) const // return value\n-254 {\n-255 out.resize(_\bs_\bi_\bz_\be());\n-256 std::array derivatives;\n-257 for(unsigned int i = 0; i < d; ++i)\n-258 derivatives[i] = 0;\n-259 for(unsigned int i = 0; i < d; ++i)\n-260 {\n-261 derivatives[i] = 1;\n-262 int index = 0;\n-263 _\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-264 for(unsigned int lp = 0; lp <= p; ++lp)\n-265 _\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-266 derivatives[i] = 0;\n-267 }\n-268 }\n-269\n-_\b2_\b7_\b1 unsigned int _\bo_\br_\bd_\be_\br () const\n-272 {\n-273 return p;\n-274 }\n-275 };\n-276\n-277}\n-278\n-279#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n+29 typedef QuadratureRule QR;\n+30 typedef typename QR::iterator QRiterator;\n+31\n+32 public:\n+_\b3_\b3 _\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+34 const LB &lb_)\n+35 : gt(gt_), lb(lb_), Minv(0)\n+36 , qr(QuadratureRules::rule(gt, 2*lb.order()))\n+37 {\n+38 // Compute inverse of the mass matrix of the local basis, and store it in\n+Minv\n+39 if(size != lb.size())\n+40 DUNE_THROW(Exception, \"size template parameter does not match size of \"\n+41 \"local basis\");\n+42\n+43 const QRiterator qrend = qr.end();\n+44 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {\n+45 std::vector base;\n+46 lb.evaluateFunction(qrit->position(),base);\n+47\n+48 for(unsigned int i = 0; i < size; ++i)\n+49 for(unsigned int j = 0; j < size; ++j)\n+50 Minv[i][j] += qrit->weight() * base[i] * base[j];\n+51 }\n+52 Minv.invert();\n+53 }\n+54\n+62 template\n+_\b6_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+64 {\n+65 using DomainType = std::decay_tposition())>;\n+66\n+67 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+68\n+69 out.clear();\n+70 out.resize(size, 0);\n+71\n+72 const QRiterator qrend = qr.end();\n+73 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {\n+74 //TODO: mass matrix\n+75 R y = f(qrit->position());\n+76\n+77 std::vector base;\n+78 lb.evaluateFunction(qrit->position(),base);\n+79\n+80 for(unsigned int i = 0; i < size; ++i)\n+81 for(unsigned int j = 0; j < size; ++j)\n+82 out[i] += Minv[i][j] * qrit->weight() * y * base[j];\n+83 }\n+84 }\n+85\n+86 private:\n+87 GeometryType gt;\n+88 const LB &lb;\n+89 FieldMatrix Minv;\n+90 const QR &qr;\n+91 };\n+92\n+93}\n+94\n+95#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_\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:34\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:42\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-Constant shape function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:201\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:271\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:239\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:252\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:222\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:213\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:216\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:22\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 &ff, 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:63\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:33\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/a00074.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00074.html", "unified_diff": "@@ -77,15 +77,15 @@\n Classes |\n Namespaces \n
    monomiallocalcoefficients.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"}, {"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: monomiallocalinterpolation.hh File Reference\n+dune-localfunctions: monomiallocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -72,35 +72,48 @@\n
  • dune
  • localfunctions
  • monomial
  • \n \n \n
    \n \n-
    monomiallocalinterpolation.hh File Reference
    \n+
    monomiallocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n+
    #include <array>
    \n+#include <cassert>
    \n+#include <numeric>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n+#include <dune/common/math.hh>
    \n+#include "../common/localbasis.hh"
    \n
    \n

    Go to the source code of this file.

    \n

    \n Classes

    class  Dune::MonomialLocalCoefficients< static_size >
     Layout map for monomial finite elements. More...
    \n \n-\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::MonomialLocalInterpolation< LB, size >
    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 >
     Constant shape function. 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": "@@ -2,23 +2,36 @@\n Loading...\n Searching...\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 _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-monomiallocalinterpolation.hh File Reference\n-#include \n-#include \n+monomiallocalbasis.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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:_\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:_\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 Constant shape 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+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/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: monomiallocalinterpolation.hh Source File\n+dune-localfunctions: monomiallocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -74,116 +74,300 @@\n \n \n \n
    \n-
    monomiallocalinterpolation.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 (C) 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_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_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-\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-
    19
    \n-
    20 template<class LB, unsigned int size>
    \n-
    \n-\n-
    22 {
    \n-
    23 typedef typename LB::Traits::DomainType D;
    \n-
    24 typedef typename LB::Traits::DomainFieldType DF;
    \n-
    25 static const int dimD=LB::Traits::dimDomain;
    \n-
    26 typedef typename LB::Traits::RangeType R;
    \n-
    27 typedef typename LB::Traits::RangeFieldType RF;
    \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 typedef QuadratureRule<DF,dimD> QR;
    \n-
    30 typedef typename QR::iterator QRiterator;
    \n-
    31
    \n-
    32 public:
    \n-
    \n-
    33 MonomialLocalInterpolation (const GeometryType &gt_,
    \n-
    34 const LB &lb_)
    \n-
    35 : gt(gt_), lb(lb_), Minv(0)
    \n-
    36 , qr(QuadratureRules<DF,dimD>::rule(gt, 2*lb.order()))
    \n-
    37 {
    \n-
    38 // Compute inverse of the mass matrix of the local basis, and store it in Minv
    \n-
    39 if(size != lb.size())
    \n-
    40 DUNE_THROW(Exception, "size template parameter does not match size of "
    \n-
    41 "local basis");
    \n-
    42
    \n-
    43 const QRiterator qrend = qr.end();
    \n-
    44 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n-
    45 std::vector<R> base;
    \n-
    46 lb.evaluateFunction(qrit->position(),base);
    \n-
    47
    \n-
    48 for(unsigned int i = 0; i < size; ++i)
    \n-
    49 for(unsigned int j = 0; j < size; ++j)
    \n-
    50 Minv[i][j] += qrit->weight() * base[i] * base[j];
    \n-
    51 }
    \n-
    52 Minv.invert();
    \n-
    53 }
    \n-
    \n-
    54
    \n-
    62 template<typename F, typename C>
    \n-
    \n-
    63 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    64 {
    \n-
    65 using DomainType = std::decay_t<decltype(qr.begin()->position())>;
    \n-
    66
    \n-
    67 auto&& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n-
    68
    \n-
    69 out.clear();
    \n-
    70 out.resize(size, 0);
    \n-
    71
    \n-
    72 const QRiterator qrend = qr.end();
    \n-
    73 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
    \n-
    74 //TODO: mass matrix
    \n-
    75 R y = f(qrit->position());
    \n-
    76
    \n-
    77 std::vector<R> base;
    \n-
    78 lb.evaluateFunction(qrit->position(),base);
    \n-
    79
    \n-
    80 for(unsigned int i = 0; i < size; ++i)
    \n-
    81 for(unsigned int j = 0; j < size; ++j)
    \n-
    82 out[i] += Minv[i][j] * qrit->weight() * y * base[j];
    \n-
    83 }
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    86 private:
    \n-
    87 GeometryType gt;
    \n-
    88 const LB &lb;
    \n-
    89 FieldMatrix<RF, size, size> Minv;
    \n-
    90 const QR &qr;
    \n-
    91 };
    \n-
    \n-
    92
    \n-
    93}
    \n-
    94
    \n-
    95#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH
    \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+
    \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+
    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+
    199 template<class D, class R, unsigned int d, unsigned int p>
    \n+
    \n+\n+
    201 {
    \n+
    202 // Helper: Number of shape functions for a k-th order element in dimension dd
    \n+
    203 static constexpr unsigned int size (int dd, int k)
    \n+
    204 {
    \n+
    205 if (dd==0 || k==0)
    \n+
    206 return 1;
    \n+
    207 return size(dd,k-1) + size(dd-1,k);
    \n+
    208 }
    \n+
    209
    \n+
    210 public:
    \n+
    212 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n+
    213 Dune::FieldMatrix<R,1,d> > Traits;
    \n+
    214
    \n+
    \n+
    216 static constexpr unsigned int size ()
    \n+
    217 {
    \n+
    218 return size(d,p);
    \n+
    219 }
    \n+
    \n+
    220
    \n+
    \n+
    222 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    223 std::vector<typename Traits::RangeType>& out) const
    \n+
    224 {
    \n+
    225 out.resize(size());
    \n+
    226 int index = 0;
    \n+
    227 std::array<unsigned int, d> derivatives;
    \n+
    228 std::fill(derivatives.begin(), derivatives.end(), 0);
    \n+\n+
    230 for (unsigned int lp = 0; lp <= p; ++lp)
    \n+
    231 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n+
    232 }
    \n+
    \n+
    233
    \n+
    \n+
    239 inline void partial(const std::array<unsigned int,d>& order,
    \n+
    240 const typename Traits::DomainType& in,
    \n+
    241 std::vector<typename Traits::RangeType>& out) const
    \n+
    242 {
    \n+
    243 out.resize(size());
    \n+
    244 int index = 0;
    \n+\n+
    246 for (unsigned int lp = 0; lp <= p; ++lp)
    \n+
    247 MonomImp::Evaluate<Traits, d>::eval(in, order, 1, lp, index, access);
    \n+
    248 }
    \n+
    \n+
    249
    \n+
    251 inline void
    \n+
    \n+
    252 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    253 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    254 {
    \n+
    255 out.resize(size());
    \n+
    256 std::array<unsigned int, d> derivatives;
    \n+
    257 for(unsigned int i = 0; i < d; ++i)
    \n+
    258 derivatives[i] = 0;
    \n+
    259 for(unsigned int i = 0; i < d; ++i)
    \n+
    260 {
    \n+
    261 derivatives[i] = 1;
    \n+
    262 int index = 0;
    \n+\n+
    264 for(unsigned int lp = 0; lp <= p; ++lp)
    \n+
    265 MonomImp::Evaluate<Traits, d>::eval(in, derivatives, 1, lp, index, access);
    \n+
    266 derivatives[i] = 0;
    \n+
    267 }
    \n+
    268 }
    \n+
    \n+
    269
    \n+
    \n+
    271 unsigned int order () const
    \n+
    272 {
    \n+
    273 return p;
    \n+
    274 }
    \n+
    \n+
    275 };
    \n+
    \n+
    276
    \n+
    277}
    \n+
    278
    \n+
    279#endif // DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition monomiallocalinterpolation.hh:22
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition monomiallocalinterpolation.hh:63
    \n-
    MonomialLocalInterpolation(const GeometryType &gt_, const LB &lb_)
    Definition monomiallocalinterpolation.hh:33
    \n-\n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    Constant shape function.
    Definition monomiallocalbasis.hh:201
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition monomiallocalbasis.hh:271
    \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:239
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition monomiallocalbasis.hh:252
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition monomiallocalbasis.hh:222
    \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:213
    \n+
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:216
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,113 +1,318 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALBASIS_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \n-12\n-13#include \n-14#include \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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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-19\n-20 template\n-_\b2_\b1 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-22 {\n-23 typedef typename LB::Traits::DomainType D;\n-24 typedef typename LB::Traits::DomainFieldType DF;\n-25 static const int dimD=LB::Traits::dimDomain;\n-26 typedef typename LB::Traits::RangeType R;\n-27 typedef typename LB::Traits::RangeFieldType RF;\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 typedef QuadratureRule QR;\n-30 typedef typename QR::iterator QRiterator;\n-31\n-32 public:\n-_\b3_\b3 _\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-34 const LB &lb_)\n-35 : gt(gt_), lb(lb_), Minv(0)\n-36 , qr(QuadratureRules::rule(gt, 2*lb.order()))\n-37 {\n-38 // Compute inverse of the mass matrix of the local basis, and store it in\n-Minv\n-39 if(size != lb.size())\n-40 DUNE_THROW(Exception, \"size template parameter does not match size of \"\n-41 \"local basis\");\n-42\n-43 const QRiterator qrend = qr.end();\n-44 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {\n-45 std::vector base;\n-46 lb.evaluateFunction(qrit->position(),base);\n-47\n-48 for(unsigned int i = 0; i < size; ++i)\n-49 for(unsigned int j = 0; j < size; ++j)\n-50 Minv[i][j] += qrit->weight() * base[i] * base[j];\n-51 }\n-52 Minv.invert();\n-53 }\n-54\n-62 template\n-_\b6_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-64 {\n-65 using DomainType = std::decay_tposition())>;\n-66\n-67 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-68\n-69 out.clear();\n-70 out.resize(size, 0);\n-71\n-72 const QRiterator qrend = qr.end();\n-73 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {\n-74 //TODO: mass matrix\n-75 R y = f(qrit->position());\n-76\n-77 std::vector base;\n-78 lb.evaluateFunction(qrit->position(),base);\n-79\n-80 for(unsigned int i = 0; i < size; ++i)\n-81 for(unsigned int j = 0; j < size; ++j)\n-82 out[i] += Minv[i][j] * qrit->weight() * y * base[j];\n-83 }\n-84 }\n-85\n-86 private:\n-87 GeometryType gt;\n-88 const LB &lb;\n-89 FieldMatrix Minv;\n-90 const QR &qr;\n-91 };\n-92\n-93}\n-94\n-95#endif //DUNE_LOCALFUNCTIONS_MONOMIAL_MONOMIALLOCALINTERPOLATION_HH\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+199 template\n+_\b2_\b0_\b0 class _\bM_\bo_\bn_\bo_\bm_\bi_\ba_\bl_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+201 {\n+202 // Helper: Number of shape functions for a k-th order element in dimension\n+dd\n+203 static constexpr unsigned int _\bs_\bi_\bz_\be (int dd, int k)\n+204 {\n+205 if (dd==0 || k==0)\n+206 return 1;\n+207 return _\bs_\bi_\bz_\be(dd,k-1) + _\bs_\bi_\bz_\be(dd-1,k);\n+208 }\n+209\n+210 public:\n+212 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_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+214\n+_\b2_\b1_\b6 static constexpr unsigned int _\bs_\bi_\bz_\be ()\n+217 {\n+218 return _\bs_\bi_\bz_\be(d,p);\n+219 }\n+220\n+_\b2_\b2_\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+223 std::vector& out) const\n+224 {\n+225 out.resize(_\bs_\bi_\bz_\be());\n+226 int index = 0;\n+227 std::array derivatives;\n+228 std::fill(derivatives.begin(), derivatives.end(), 0);\n+229 _\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+230 for (unsigned int lp = 0; lp <= p; ++lp)\n+231 _\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+232 }\n+233\n+_\b2_\b3_\b9 inline void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array& _\bo_\br_\bd_\be_\br,\n+240 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+241 std::vector& out) const\n+242 {\n+243 out.resize(_\bs_\bi_\bz_\be());\n+244 int index = 0;\n+245 _\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+246 for (unsigned int lp = 0; lp <= p; ++lp)\n+247 _\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+248 }\n+249\n+251 inline void\n+_\b2_\b5_\b2 _\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+253 std::vector& out) const // return value\n+254 {\n+255 out.resize(_\bs_\bi_\bz_\be());\n+256 std::array derivatives;\n+257 for(unsigned int i = 0; i < d; ++i)\n+258 derivatives[i] = 0;\n+259 for(unsigned int i = 0; i < d; ++i)\n+260 {\n+261 derivatives[i] = 1;\n+262 int index = 0;\n+263 _\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+264 for(unsigned int lp = 0; lp <= p; ++lp)\n+265 _\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+266 derivatives[i] = 0;\n+267 }\n+268 }\n+269\n+_\b2_\b7_\b1 unsigned int _\bo_\br_\bd_\be_\br () const\n+272 {\n+273 return p;\n+274 }\n+275 };\n+276\n+277}\n+278\n+279#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:_\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:22\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 &ff, 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:63\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:33\n-_\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_\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:34\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:42\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+Constant shape function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:201\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:271\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:239\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:252\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:222\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:213\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: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/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: hierarchicalp2.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-
    hierarchicalp2.hh File Reference
    \n+
    dualp1localcoefficients.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 <cstddef>
    \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::HierarchicalP2LocalFiniteElement< D, R, dim >
    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,23 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+dualp1localcoefficients.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:_\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+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/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: hierarchicalp2.hh Source File\n+dune-localfunctions: dualp1localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,78 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalp2.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 (C) 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+
    5#ifndef DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-\n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n+
    10
    \n+\n
    12
    \n-\n-\n+
    13namespace Dune
    \n+
    14{
    \n
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    21 template<class D, class R, int dim>
    \n+
    21 template <int dim>
    \n
    \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+
    24 public:
    \n+
    \n+\n+
    27 {
    \n+
    28 for (std::size_t i=0; i<size(); i++)
    \n+
    29 li[i] = LocalKey(i,dim,0);
    \n+
    30 }
    \n+
    \n+
    31
    \n+
    \n+
    33 std::size_t size () const
    \n+
    34 {
    \n+
    35 return dim+1;
    \n+
    36 }
    \n+
    \n+
    37
    \n+
    \n+
    39 const LocalKey& localKey (std::size_t i) const
    \n+
    40 {
    \n+
    41 return li[i];
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    44 private:
    \n+
    45 std::vector<LocalKey> li;
    \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-
    Hierarchical p2 shape functions for the simplex.
    \n-\n-\n+
    48}
    \n+
    49
    \n+
    50#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 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:18
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:23
    \n+
    DualP1LocalCoefficients()
    Standard constructor.
    Definition dualp1localcoefficients.hh:26
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualp1localcoefficients.hh:39
    \n+
    std::size_t size() const
    number of coefficients
    Definition dualp1localcoefficients.hh:33
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,76 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_DUAL_P1_LOCALCOEFFICIENTS_HH\n+6#define DUNE_DUAL_P1_LOCALCOEFFICIENTS_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+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-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+13namespace _\bD_\bu_\bn_\be\n+14{\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+21 template \n+_\b2_\b2 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 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+24 public:\n+_\b2_\b6 _\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+27 {\n+28 for (std::size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n+29 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0);\n+30 }\n+31\n+_\b3_\b3 std::size_t _\bs_\bi_\bz_\be () const\n+34 {\n+35 return dim+1;\n+36 }\n+37\n+_\b3_\b9 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+40 {\n+41 return li[i];\n+42 }\n+43\n+44 private:\n+45 std::vector li;\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_\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-_\bl_\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+48}\n+49\n+50#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:_\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: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:23\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:23\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:26\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:39\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: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/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: hierarchicalsimplexp2localinterpolation.hh File Reference\n+dune-localfunctions: dualp1localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalsimplexp2localinterpolation.hh File Reference
    \n+
    dualp1localbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \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::HierarchicalSimplexP2LocalInterpolation< LB >
    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,21 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-hierarchicalsimplexp2localinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 _\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+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/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: hierarchicalsimplexp2localinterpolation.hh Source File\n+dune-localfunctions: dualp1localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,134 +70,147 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalsimplexp2localinterpolation.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 (C) 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_DUAL_P1_LOCALBASIS_HH
    \n+
    6#define DUNE_DUAL_P1_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-\n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    16 template<class LB>
    \n-
    \n-\n-
    18 {
    \n-
    19 public:
    \n-
    20
    \n-
    21 template<typename F, typename C>
    \n-
    \n-
    22 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    23 {
    \n-
    24 typename LB::Traits::DomainType x;
    \n-
    25 typename LB::Traits::RangeType y;
    \n-
    26
    \n-
    27 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n-
    28
    \n-
    29 static_assert(LB::Traits::dimDomain <= 3,
    \n-
    30 "LocalInterpolation for HierarchicalSimplexP2 finite elements"
    \n-
    31 " is only implemented for dimDomain <=3!");
    \n-
    32
    \n-
    33 switch ( int(LB::Traits::dimDomain)) {
    \n-
    34
    \n-
    35 case 1 :
    \n-
    36
    \n-
    37 out.resize(3);
    \n-
    38
    \n-
    39 // First: the two vertex dofs
    \n-
    40 x[0] = 0.0; out[0] = f(x);
    \n-
    41 x[0] = 1.0; out[2] = f(x);
    \n-
    42
    \n-
    43 // Then: the edge dof
    \n-
    44 x[0] = 0.5; y = f(x);
    \n-
    45 out[1] = y - 0.5*(out[0] + out[2]);
    \n-
    46
    \n-
    47 break;
    \n-
    48
    \n-
    49
    \n-
    50 case 2 :
    \n-
    51
    \n-
    52 out.resize(6);
    \n-
    53
    \n-
    54 // First: the three vertex dofs
    \n-
    55 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);
    \n-
    56 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);
    \n-
    57 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);
    \n-
    58
    \n-
    59 // Then: the three edge dofs
    \n-
    60 x[0] = 0.5; x[1] = 0.0; y = f(x);
    \n-
    61 out[1] = y - 0.5*(out[0] + out[2]);
    \n-
    62
    \n-
    63 x[0] = 0.0; x[1] = 0.5; y = f(x);
    \n-
    64 out[3] = y - 0.5*(out[0] + out[5]);
    \n-
    65
    \n-
    66 x[0] = 0.5; x[1] = 0.5; y = f(x);
    \n-
    67 out[4] = y - 0.5*(out[2] + out[5]);
    \n-
    68
    \n-
    69 break;
    \n-
    70
    \n-
    71 case 3 :
    \n-
    72
    \n-
    73 out.resize(10);
    \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+
    32 template<class D, class R, int dim, bool faceDualT=false>
    \n+
    \n+\n+
    34 {
    \n+
    35 public:
    \n+
    37 static const bool faceDual = faceDualT;
    \n+
    39 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n+
    40 Dune::FieldMatrix<R,1,dim> > Traits;
    \n+
    41
    \n+
    \n+
    43 unsigned int size () const
    \n+
    44 {
    \n+
    45 return dim+1;
    \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 // evaluate P1 basis functions
    \n+
    53 std::vector<typename Traits::RangeType> p1Values(size());
    \n+
    54
    \n+
    55 p1Values[0] = 1.0;
    \n+
    56
    \n+
    57 for (int i=0; i<dim; i++) {
    \n+
    58 p1Values[0] -= in[i];
    \n+
    59 p1Values[i+1] = in[i];
    \n+
    60 }
    \n+
    61
    \n+
    62 // compute dual basis function values as a linear combination of the Lagrange values
    \n+
    63 out.resize(size());
    \n+
    64
    \n+
    65 for (int i=0; i<=dim; i++) {
    \n+
    66 out[i] = (dim+!faceDual)*p1Values[i];
    \n+
    67 for (int j=0; j<i; j++)
    \n+
    68 out[i] -= p1Values[j];
    \n+
    69
    \n+
    70 for (int j=i+1; j<=dim; j++)
    \n+
    71 out[i] -= p1Values[j];
    \n+
    72 }
    \n+
    73 }
    \n+
    \n
    74
    \n-
    75 // First: the four vertex dofs
    \n-
    76 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n-
    77 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[2] = f(x);
    \n-
    78 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[5] = f(x);
    \n-
    79 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[9] = f(x);
    \n-
    80
    \n-
    81 // Then: the six edge dofs
    \n-
    82 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n-
    83 out[1] = y - 0.5*(out[0] + out[2]);
    \n-
    84
    \n-
    85 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    86 out[3] = y - 0.5*(out[0] + out[5]);
    \n-
    87
    \n-
    88 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    89 out[4] = y - 0.5*(out[2] + out[5]);
    \n-
    90
    \n-
    91 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    92 out[6] = y - 0.5*(out[0] + out[9]);
    \n-
    93
    \n-
    94 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    95 out[7] = y - 0.5*(out[2] + out[9]);
    \n+
    76 inline void
    \n+
    \n+\n+
    78 std::vector<typename Traits::JacobianType>& out) const
    \n+
    79 {
    \n+
    80 // evaluate P1 jacobians
    \n+
    81 std::vector<typename Traits::JacobianType> p1Jacs(size());
    \n+
    82
    \n+
    83 for (int i=0; i<dim; i++)
    \n+
    84 p1Jacs[0][0][i] = -1;
    \n+
    85
    \n+
    86 for (int i=0; i<dim; i++)
    \n+
    87 for (int j=0; j<dim; j++)
    \n+
    88 p1Jacs[i+1][0][j] = (i==j);
    \n+
    89
    \n+
    90 // compute dual basis jacobians as linear combination of the Lagrange jacobians
    \n+
    91 out.resize(size());
    \n+
    92
    \n+
    93 for (size_t i=0; i<=dim; i++) {
    \n+
    94 out[i][0] = 0;
    \n+
    95 out[i][0].axpy(dim+!faceDual,p1Jacs[i][0]);
    \n
    96
    \n-
    97 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n-
    98 out[8] = y - 0.5*(out[5] + out[9]);
    \n+
    97 for (size_t j=0; j<i; j++)
    \n+
    98 out[i][0] -= p1Jacs[j][0];
    \n
    99
    \n-
    100 break;
    \n-
    101
    \n+
    100 for (int j=i+1; j<=dim; j++)
    \n+
    101 out[i][0] -= p1Jacs[j][0];
    \n
    102 }
    \n
    103 }
    \n
    \n
    104
    \n-
    105 };
    \n+
    \n+
    106 void partial (const std::array<unsigned int, dim>& order,
    \n+
    107 const typename Traits::DomainType& in, // position
    \n+
    108 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    109 {
    \n+
    110 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    111 if (totalOrder == 0) {
    \n+
    112 evaluateFunction(in, out);
    \n+
    113 } else {
    \n+
    114 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    115 }
    \n+
    116 }
    \n+
    \n+
    117
    \n+
    \n+
    119 unsigned int order () const
    \n+
    120 {
    \n+
    121 return 1;
    \n+
    122 }
    \n+
    \n+
    123 };
    \n
    \n-
    106}
    \n-
    107
    \n-
    108#endif
    \n+
    124}
    \n+
    125#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition hierarchicalsimplexp2localinterpolation.hh:18
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition hierarchicalsimplexp2localinterpolation.hh:22
    \n-\n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Dual Lagrange shape functions on the simplex.
    Definition dualp1localbasis.hh:34
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualp1localbasis.hh:119
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualp1localbasis.hh:49
    \n+
    static const bool faceDual
    Determines if the basis is only biorthogonal on adjacent faces.
    Definition dualp1localbasis.hh:37
    \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:106
    \n+
    unsigned int size() const
    number of shape functions
    Definition dualp1localbasis.hh:43
    \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:40
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualp1localbasis.hh:77
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,126 +1,163 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_DUAL_P1_LOCALBASIS_HH\n+6#define DUNE_DUAL_P1_LOCALBASIS_HH\n 7\n-8#include \n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-16 template\n-_\b1_\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_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-18 {\n-19 public:\n-20\n-21 template\n-_\b2_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-23 {\n-24 typename LB::Traits::DomainType x;\n-25 typename LB::Traits::RangeType y;\n-26\n-27 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-28\n-29 static_assert(LB::Traits::dimDomain <= 3,\n-30 \"LocalInterpolation for HierarchicalSimplexP2 finite elements\"\n-31 \" is only implemented for dimDomain <=3!\");\n-32\n-33 switch ( int(LB::Traits::dimDomain)) {\n-34\n-35 case 1 :\n-36\n-37 out.resize(3);\n-38\n-39 // First: the two vertex dofs\n-40 x[0] = 0.0; out[0] = f(x);\n-41 x[0] = 1.0; out[2] = f(x);\n-42\n-43 // Then: the edge dof\n-44 x[0] = 0.5; y = f(x);\n-45 out[1] = y - 0.5*(out[0] + out[2]);\n-46\n-47 break;\n-48\n-49\n-50 case 2 :\n-51\n-52 out.resize(6);\n-53\n-54 // First: the three vertex dofs\n-55 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);\n-56 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);\n-57 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);\n-58\n-59 // Then: the three edge dofs\n-60 x[0] = 0.5; x[1] = 0.0; y = f(x);\n-61 out[1] = y - 0.5*(out[0] + out[2]);\n-62\n-63 x[0] = 0.0; x[1] = 0.5; y = f(x);\n-64 out[3] = y - 0.5*(out[0] + out[5]);\n-65\n-66 x[0] = 0.5; x[1] = 0.5; y = f(x);\n-67 out[4] = y - 0.5*(out[2] + out[5]);\n-68\n-69 break;\n-70\n-71 case 3 :\n-72\n-73 out.resize(10);\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+32 template\n+_\b3_\b3 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+34 {\n+35 public:\n+_\b3_\b7 static const bool _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl = faceDualT;\n+39 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_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+41\n+_\b4_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+44 {\n+45 return dim+1;\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 // evaluate P1 basis functions\n+53 std::vector p1Values(_\bs_\bi_\bz_\be());\n+54\n+55 p1Values[0] = 1.0;\n+56\n+57 for (int i=0; i& out) const\n+79 {\n+80 // evaluate P1 jacobians\n+81 std::vector p1Jacs(_\bs_\bi_\bz_\be());\n+82\n+83 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n+107 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+108 std::vector& out) const // return value\n+109 {\n+110 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+111 if (totalOrder == 0) {\n+112 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+113 } else {\n+114 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+115 }\n+116 }\n+117\n+_\b1_\b1_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+120 {\n+121 return 1;\n+122 }\n+123 };\n+124}\n+125#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_\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:18\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localinterpolation.hh:22\n-_\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_\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:34\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:42\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:34\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:119\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:49\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:37\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:106\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:43\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:40\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:77\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/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: hierarchicalsimplexp2localbasis.hh File Reference\n+dune-localfunctions: dualp1localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,55 +65,39 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    hierarchicalsimplexp2localbasis.hh File Reference
    \n+
    dualp1localinterpolation.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 <vector>
    \n+#include <dune/localfunctions/common/localinterpolation.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::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...
    class  Dune::DualP1LocalInterpolation< 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,35 +1,21 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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+dualp1localinterpolation.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_\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:_\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+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-*\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/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: hierarchicalsimplexp2localbasis.hh Source File\n+dune-localfunctions: dualp1localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,367 +70,89 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchicalsimplexp2localbasis.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 (C) 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_DUAL_P1_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH
    \n
    7
    \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, 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+
    8#include <vector>
    \n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    13 template<int dim, class LB>
    \n+
    \n+\n+
    15 {
    \n+
    16 public:
    \n+
    18 template<typename F, typename C>
    \n+
    \n+
    19 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    20 {
    \n+
    21 typename LB::Traits::DomainType x;
    \n+
    22 // If the dual functions are dual on the faces,
    \n+
    23 // then adjust the interpolation weights
    \n+
    24 const int faceDual(LB::faceDual);
    \n+
    25
    \n+
    26 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n+
    27
    \n+
    28 // compute P1 interpolation coefficients
    \n+
    29 std::vector<C> p1Interpolation(dim+1);
    \n
    30
    \n-
    45 template<class D, class R>
    \n-
    \n-\n-
    47 {
    \n-
    48 public:
    \n-
    50 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n-
    51 Dune::FieldMatrix<R,1,1> > Traits;
    \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+
    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-
    \n-
    54 unsigned int size () const
    \n-
    55 {
    \n-
    56 return 3;
    \n-
    57 }
    \n-
    \n-
    58
    \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(3);
    \n-
    64
    \n-
    65 out[0] = 1-in[0];
    \n-
    66 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);
    \n-
    67 out[2] = in[0];
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    71 inline void
    \n-
    \n-
    72 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    73 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    74 {
    \n-
    75 out.resize(3);
    \n-
    76
    \n-
    77 out[0][0][0] = -1;
    \n-
    78 out[1][0][0] = 4-8*in[0];
    \n-
    79 out[2][0][0] = 1;
    \n-
    80 }
    \n-
    \n-
    81
    \n-
    \n-
    83 void partial (const std::array<unsigned int, 1>& order,
    \n-
    84 const typename Traits::DomainType& in, // position
    \n-
    85 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    86 {
    \n-
    87 auto totalOrder = order[0];
    \n-
    88 if (totalOrder == 0) {
    \n-
    89 evaluateFunction(in, out);
    \n-
    90 } else if (totalOrder == 1) {
    \n-
    91 out.resize(size());
    \n-
    92 out[0] = -1;
    \n-
    93 out[1] = 4-8*in[0];
    \n-
    94 out[2] = 1;
    \n-
    95 } else if (totalOrder == 2) {
    \n-
    96 out.resize(size());
    \n-
    97 out[0] = 0;
    \n-
    98 out[1] = -8;
    \n-
    99 out[2] = 0;
    \n-
    100 } else {
    \n-
    101 out.resize(size());
    \n-
    102 out[0] = out[1] = out[2] = 0;
    \n-
    103 }
    \n-
    104 }
    \n-
    \n-
    105
    \n-
    \n-
    108 unsigned int order () const
    \n-
    109 {
    \n-
    110 return 2;
    \n-
    111 }
    \n-
    \n-
    112
    \n-
    113 };
    \n-
    \n-
    114
    \n-
    134 template<class D, class R>
    \n-
    \n-\n-
    136 {
    \n-
    137 public:
    \n-
    139 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n-
    140 Dune::FieldMatrix<R,1,2> > Traits;
    \n-
    141
    \n-
    \n-
    143 unsigned int size () const
    \n-
    144 {
    \n-
    145 return 6;
    \n-
    146 }
    \n-
    \n-
    147
    \n-
    \n-
    149 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    150 std::vector<typename Traits::RangeType>& out) const
    \n-
    151 {
    \n-
    152 out.resize(6);
    \n-
    153
    \n-
    154 out[0] = 1 - in[0] - in[1];
    \n-
    155 out[1] = 4*in[0]*(1-in[0]-in[1]);
    \n-
    156 out[2] = in[0];
    \n-
    157 out[3] = 4*in[1]*(1-in[0]-in[1]);
    \n-
    158 out[4] = 4*in[0]*in[1];
    \n-
    159 out[5] = in[1];
    \n-
    160
    \n-
    161 }
    \n-
    \n-
    162
    \n-
    164 inline void
    \n-
    \n-
    165 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    166 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    167 {
    \n-
    168 out.resize(6);
    \n-
    169
    \n-
    170 out[0][0][0] = -1; out[0][0][1] = -1;
    \n-
    171 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];
    \n-
    172 out[2][0][0] = 1; out[2][0][1] = 0;
    \n-
    173 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];
    \n-
    174 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];
    \n-
    175 out[5][0][0] = 0; out[5][0][1] = 1;
    \n-
    176 }
    \n-
    \n-
    177
    \n-
    \n-
    179 void partial (const std::array<unsigned int, 2>& order,
    \n-
    180 const typename Traits::DomainType& in, // position
    \n-
    181 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    182 {
    \n-
    183 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    184 if (totalOrder == 0) {
    \n-
    185 evaluateFunction(in, out);
    \n-
    186 } else if (totalOrder == 1) {
    \n-
    187 out.resize(size());
    \n-
    188 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    189
    \n-
    190 switch (direction) {
    \n-
    191 case 0:
    \n-
    192 out[0] = -1;
    \n-
    193 out[1] = 4-8*in[0]-4*in[1];
    \n-
    194 out[2] = 1;
    \n-
    195 out[3] = -4*in[1];
    \n-
    196 out[4] = 4*in[1];
    \n-
    197 out[5] = 0;
    \n-
    198 break;
    \n-
    199 case 1:
    \n-
    200 out[0] = -1;
    \n-
    201 out[1] = -4*in[0];
    \n-
    202 out[2] = 0;
    \n-
    203 out[3] = 4-4*in[0]-8*in[1];
    \n-
    204 out[4] = 4*in[0];
    \n-
    205 out[5] = 1;
    \n-
    206 break;
    \n-
    207 default:
    \n-
    208 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    209 }
    \n-
    210 } else {
    \n-
    211 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    212 }
    \n-
    213 }
    \n-
    \n-
    214
    \n-
    \n-
    217 unsigned int order () const
    \n-
    218 {
    \n-
    219 return 2;
    \n-
    220 }
    \n-
    \n-
    221
    \n-
    222 };
    \n-
    \n-
    223
    \n-
    247 template<class D, class R>
    \n-
    \n-\n-
    249 {
    \n-
    250 public:
    \n-
    252 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n-
    253 Dune::FieldMatrix<R,1,3> > Traits;
    \n-
    254
    \n-
    \n-
    256 unsigned int size () const
    \n-
    257 {
    \n-
    258 return 10;
    \n-
    259 }
    \n-
    \n-
    260
    \n-
    \n-
    262 void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    263 std::vector<typename Traits::RangeType>& out) const
    \n-
    264 {
    \n-
    265 out.resize(10);
    \n-
    266
    \n-
    267 out[0] = 1 - in[0] - in[1] - in[2];
    \n-
    268 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);
    \n-
    269 out[2] = in[0];
    \n-
    270 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);
    \n-
    271 out[4] = 4 * in[0] * in[1];
    \n-
    272 out[5] = in[1];
    \n-
    273 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);
    \n-
    274 out[7] = 4 * in[0] * in[2];
    \n-
    275 out[8] = 4 * in[1] * in[2];
    \n-
    276 out[9] = in[2];
    \n-
    277 }
    \n-
    \n-
    278
    \n-
    \n-
    280 void evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    281 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    282 {
    \n-
    283 out.resize(10);
    \n-
    284
    \n-
    285 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;
    \n-
    286 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-
    287 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    288 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-
    289 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;
    \n-
    290 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;
    \n-
    291 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-
    292 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];
    \n-
    293 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];
    \n-
    294 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;
    \n-
    295 }
    \n-
    \n-
    296
    \n-
    \n-
    298 void partial (const std::array<unsigned int, 3>& order,
    \n-
    299 const typename Traits::DomainType& in, // position
    \n-
    300 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    301 {
    \n-
    302 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    303 if (totalOrder == 0) {
    \n-
    304 evaluateFunction(in, out);
    \n-
    305 } else if (totalOrder == 1) {
    \n-
    306 out.resize(size());
    \n-
    307 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    308
    \n-
    309 switch (direction) {
    \n-
    310 case 0:
    \n-
    311 out[0] = -1;
    \n-
    312 out[1] = 4-8*in[0]-4*in[1]-4*in[2];
    \n-
    313 out[2] = 1;
    \n-
    314 out[3] = -4*in[1];
    \n-
    315 out[4] = 4*in[1];
    \n-
    316 out[5] = 0;
    \n-
    317 out[6] = -4*in[2];
    \n-
    318 out[7] = 4*in[2];
    \n-
    319 out[8] = 0;
    \n-
    320 out[9] = 0;
    \n-
    321 break;
    \n-
    322 case 1:
    \n-
    323 out[0] = -1;
    \n-
    324 out[1] = -4*in[0];
    \n-
    325 out[2] = 0;
    \n-
    326 out[3] = 4-4*in[0]-8*in[1]-4*in[2];
    \n-
    327 out[4] = 4*in[0];
    \n-
    328 out[5] = 1;
    \n-
    329 out[6] = -4*in[2];
    \n-
    330 out[7] = 0;
    \n-
    331 out[8] = 4*in[2];
    \n-
    332 out[9] = 0;
    \n-
    333 break;
    \n-
    334 case 2:
    \n-
    335 out[0] = -1;
    \n-
    336 out[1] = -4*in[0];
    \n-
    337 out[2] = 0;
    \n-
    338 out[3] = -4*in[1];
    \n-
    339 out[4] = 0;
    \n-
    340 out[5] = 0;
    \n-
    341 out[6] = 4-4*in[0]-4*in[1]-8*in[2];
    \n-
    342 out[7] = 4*in[0];
    \n-
    343 out[8] = 4*in[1];
    \n-
    344 out[9] = 1;
    \n-
    345 break;
    \n-
    346 default:
    \n-
    347 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    348 }
    \n-
    349 } else {
    \n-
    350 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    351 }
    \n-
    352 }
    \n-
    \n-
    353
    \n-
    \n-
    356 unsigned int order () const
    \n-
    357 {
    \n-
    358 return 2;
    \n-
    359 }
    \n-
    \n-
    360
    \n-
    361 };
    \n-
    \n-
    362}
    \n-
    363#endif
    \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
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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:108
    \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:51
    \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:83
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:54
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:72
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:60
    \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:140
    \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:179
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:143
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:217
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:165
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:149
    \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:253
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:262
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:280
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:256
    \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:298
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:356
    \n-\n+
    Definition dualp1localinterpolation.hh:15
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualp1localinterpolation.hh:19
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,403 +1,82 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 DUNE_DUAL_P1_LOCALINTERPOLATION_HH\n+6#define DUNE_DUAL_P1_LOCALINTERPOLATION_HH\n 7\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+8#include \n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+13 template\n+_\b1_\b4 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+15 {\n+16 public:\n+18 template\n+_\b1_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+20 {\n+21 typename LB::Traits::DomainType x;\n+22 // If the dual functions are dual on the faces,\n+23 // then adjust the interpolation weights\n+24 const int faceDual(LB::faceDual);\n+25\n+26 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+27\n+28 // compute P1 interpolation coefficients\n+29 std::vector p1Interpolation(dim+1);\n 30\n-45 template\n-_\b4_\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_\bB_\ba_\bs_\bi_\bs\n-47 {\n-48 public:\n-50 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_\b1 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+31 // vertex 0\n+32 for (int i=0; i& out) const\n-62 {\n-63 out.resize(3);\n-64\n-65 out[0] = 1-in[0];\n-66 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);\n-67 out[2] = in[0];\n-68 }\n-69\n-71 inline void\n-_\b7_\b2 _\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-73 std::vector& out) const // return value\n-74 {\n-75 out.resize(3);\n-76\n-77 out[0][0][0] = -1;\n-78 out[1][0][0] = 4-8*in[0];\n-79 out[2][0][0] = 1;\n-80 }\n-81\n-_\b8_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-84 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-85 std::vector& out) const // return value\n-86 {\n-87 auto totalOrder = order[0];\n-88 if (totalOrder == 0) {\n-89 evaluateFunction(in, out);\n-90 } else if (totalOrder == 1) {\n-91 out.resize(size());\n-92 out[0] = -1;\n-93 out[1] = 4-8*in[0];\n-94 out[2] = 1;\n-95 } else if (totalOrder == 2) {\n-96 out.resize(size());\n-97 out[0] = 0;\n-98 out[1] = -8;\n-99 out[2] = 0;\n-100 } else {\n-101 out.resize(size());\n-102 out[0] = out[1] = out[2] = 0;\n-103 }\n-104 }\n-105\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-134 template\n-_\b1_\b3_\b5 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-136 {\n-137 public:\n-139 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_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-141\n-_\b1_\b4_\b3 unsigned int _\bs_\bi_\bz_\be () const\n-144 {\n-145 return 6;\n-146 }\n-147\n-_\b1_\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-150 std::vector& out) const\n-151 {\n-152 out.resize(6);\n-153\n-154 out[0] = 1 - in[0] - in[1];\n-155 out[1] = 4*in[0]*(1-in[0]-in[1]);\n-156 out[2] = in[0];\n-157 out[3] = 4*in[1]*(1-in[0]-in[1]);\n-158 out[4] = 4*in[0]*in[1];\n-159 out[5] = in[1];\n-160\n-161 }\n-162\n-164 inline void\n-_\b1_\b6_\b5 _\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-166 std::vector& out) const // return value\n-167 {\n-168 out.resize(6);\n-169\n-170 out[0][0][0] = -1; out[0][0][1] = -1;\n-171 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];\n-172 out[2][0][0] = 1; out[2][0][1] = 0;\n-173 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];\n-174 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];\n-175 out[5][0][0] = 0; out[5][0][1] = 1;\n-176 }\n-177\n-_\b1_\b7_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-180 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-181 std::vector& out) const // return value\n-182 {\n-183 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-184 if (totalOrder == 0) {\n-185 evaluateFunction(in, out);\n-186 } else if (totalOrder == 1) {\n-187 out.resize(size());\n-188 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-189\n-190 switch (direction) {\n-191 case 0:\n-192 out[0] = -1;\n-193 out[1] = 4-8*in[0]-4*in[1];\n-194 out[2] = 1;\n-195 out[3] = -4*in[1];\n-196 out[4] = 4*in[1];\n-197 out[5] = 0;\n-198 break;\n-199 case 1:\n-200 out[0] = -1;\n-201 out[1] = -4*in[0];\n-202 out[2] = 0;\n-203 out[3] = 4-4*in[0]-8*in[1];\n-204 out[4] = 4*in[0];\n-205 out[5] = 1;\n-206 break;\n-207 default:\n-208 DUNE_THROW(RangeError, \"Component out of range.\");\n-209 }\n-210 } else {\n-211 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-212 }\n-213 }\n-214\n-_\b2_\b1_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n-218 {\n-219 return 2;\n-220 }\n-221\n-222 };\n-223\n-247 template\n-_\b2_\b4_\b8 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-249 {\n-250 public:\n-252 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_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-254\n-_\b2_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-257 {\n-258 return 10;\n-259 }\n-260\n-_\b2_\b6_\b2 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-263 std::vector& out) const\n-264 {\n-265 out.resize(10);\n-266\n-267 out[0] = 1 - in[0] - in[1] - in[2];\n-268 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);\n-269 out[2] = in[0];\n-270 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);\n-271 out[4] = 4 * in[0] * in[1];\n-272 out[5] = in[1];\n-273 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);\n-274 out[7] = 4 * in[0] * in[2];\n-275 out[8] = 4 * in[1] * in[2];\n-276 out[9] = in[2];\n-277 }\n-278\n-_\b2_\b8_\b0 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-281 std::vector& out) const // return value\n-282 {\n-283 out.resize(10);\n-284\n-285 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;\n-286 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-287 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;\n-288 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-289 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;\n-290 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;\n-291 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-292 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];\n-293 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];\n-294 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;\n-295 }\n-296\n-_\b2_\b9_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-299 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-300 std::vector& out) const // return value\n-301 {\n-302 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-303 if (totalOrder == 0) {\n-304 evaluateFunction(in, out);\n-305 } else if (totalOrder == 1) {\n-306 out.resize(size());\n-307 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-308\n-309 switch (direction) {\n-310 case 0:\n-311 out[0] = -1;\n-312 out[1] = 4-8*in[0]-4*in[1]-4*in[2];\n-313 out[2] = 1;\n-314 out[3] = -4*in[1];\n-315 out[4] = 4*in[1];\n-316 out[5] = 0;\n-317 out[6] = -4*in[2];\n-318 out[7] = 4*in[2];\n-319 out[8] = 0;\n-320 out[9] = 0;\n-321 break;\n-322 case 1:\n-323 out[0] = -1;\n-324 out[1] = -4*in[0];\n-325 out[2] = 0;\n-326 out[3] = 4-4*in[0]-8*in[1]-4*in[2];\n-327 out[4] = 4*in[0];\n-328 out[5] = 1;\n-329 out[6] = -4*in[2];\n-330 out[7] = 0;\n-331 out[8] = 4*in[2];\n-332 out[9] = 0;\n-333 break;\n-334 case 2:\n-335 out[0] = -1;\n-336 out[1] = -4*in[0];\n-337 out[2] = 0;\n-338 out[3] = -4*in[1];\n-339 out[4] = 0;\n-340 out[5] = 0;\n-341 out[6] = 4-4*in[0]-4*in[1]-8*in[2];\n-342 out[7] = 4*in[0];\n-343 out[8] = 4*in[1];\n-344 out[9] = 1;\n-345 break;\n-346 default:\n-347 DUNE_THROW(RangeError, \"Component out of range.\");\n-348 }\n-349 } else {\n-350 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-351 }\n-352 }\n-353\n-_\b3_\b5_\b6 unsigned int _\bo_\br_\bd_\be_\br () const\n-357 {\n-358 return 2;\n-359 }\n-360\n-361 };\n-362}\n-363#endif\n+53 for (int j=i+1; j<=dim; j++)\n+54 out[i] += p1Interpolation[j]/(dim+2-faceDual);\n+55 }\n+56 }\n+57\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_\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:34\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:42\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:108\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:51\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:83\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:54\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:72\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:60\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:140\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:179\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:143\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:217\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:165\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:149\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:253\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:262\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:280\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: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:_\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:298\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:356\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_\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:15\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 &ff, 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:19\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/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: hierarchicalprismp2.hh File Reference\n+dune-localfunctions: dualp1.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-
    hierarchicalprismp2.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 Classes

    class  Dune::HierarchicalPrismP2LocalFiniteElement< D, R >
    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,23 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-hierarchicalprismp2.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/_\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_\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:_\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:_\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/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: hierarchicalprismp2.hh Source File\n+dune-localfunctions: dualp1.hh Source File\n \n \n \n \n \n \n \n@@ -70,122 +70,118 @@\n
    \n \n \n \n \n \n \n
    \n-
    hierarchicalprismp2.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 (C) 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_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-
    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-\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-
    Hierarchical prism p2 shape functions for the simplex.
    \n-\n-\n-\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+
    90
    \n+
    91#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-
    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:18
    \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:34
    \n+
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:23
    \n+
    Definition dualp1localinterpolation.hh:15
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,132 +1,130 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_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/_\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_\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+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-80 };\n-81\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_\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+85 };\n+86\n+87\n+88\n+89}\n+90\n+91#endif\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 _\bl_\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 _\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_\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+_\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 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 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 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:18\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:34\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:23\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:15\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalprismp2localbasis.hh File Reference\n+dune-localfunctions: dualq1localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalprismp2localbasis.hh File Reference
    \n+
    dualq1localinterpolation.hh File Reference
    \n
    \n
    \n-\n-

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

    \n-
    #include <numeric>
    \n+
    #include <array>
    \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/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::HierarchicalPrismP2LocalBasis< D, R >
    class  Dune::DualQ1LocalInterpolation< dim, LB >
     
    \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,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-hierarchicalprismp2localbasis.hh File Reference\n-Hierarchical prism p2 shape functions for the simplex. _\bM_\bo_\br_\be_\b._\b._\b.\n-#include \n+dualq1localinterpolation.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_\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:_\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+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 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/a00092_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00092_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: dualq1localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,271 +70,110 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchicalprismp2localbasis.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 (C) 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_DUAL_Q1_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH
    \n
    7
    \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+
    8#include <array>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fvector.hh>
    \n+
    12#include <dune/common/fmatrix.hh>
    \n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17
    \n+
    19 template<int dim, class LB>
    \n+
    \n+\n+
    21 {
    \n+
    22 public:
    \n+
    23
    \n+
    \n+
    24 void setCoefficients(const std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)>& coefficients)
    \n+
    25 {
    \n+
    26 coefficients_ = coefficients;
    \n+
    27 }
    \n+
    \n+
    28
    \n+
    29
    \n+
    31 template<typename F, typename C>
    \n+
    \n+
    32 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    33 {
    \n+
    34 typename LB::Traits::DomainType x;
    \n+
    35
    \n+
    36 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n+
    37
    \n+
    38 const int size = 1<<dim;
    \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+
    40 // compute Q1 interpolation coefficients
    \n+
    41 Dune::FieldVector<C,size> q1Coefficients;
    \n+
    42
    \n+
    43 for (int i=0; i< (1<<dim); i++) {
    \n+
    44
    \n+
    45 // Generate coordinate of the i-th corner of the reference cube
    \n+
    46 // We could use the ReferenceElement for this as well, but it is
    \n+
    47 // still not clear how dune-localfunctions should have access to them.
    \n+
    48 for (int j=0; j<dim; j++)
    \n+
    49 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n+
    50
    \n+
    51 q1Coefficients[i] = f(x);
    \n+
    52
    \n+
    53 }
    \n+
    54
    \n+
    55 out.resize(size);
    \n+
    56
    \n+
    57 // solve a linear system to compute the dual coefficients
    \n+
    58 Dune::FieldMatrix<C,size,size> mat;
    \n+
    59
    \n+
    60 for (int i=0; i<size; i++)
    \n+
    61 for (int j=0; j<size; j++)
    \n+
    62 mat[i][j] = coefficients_[j][i];
    \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-
    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-
    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+
    64 // now solve for the weights
    \n+
    65 Dune::FieldVector<C,size> sol(0);
    \n+
    66
    \n+
    67 mat.solve(sol,q1Coefficients);
    \n+
    68
    \n+
    69 // write result in out vector
    \n+
    70 for (int i=0; i<size; i++)
    \n+
    71 out[i] = sol[i];
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    74 private:
    \n+
    75 std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)> coefficients_;
    \n+
    76 };
    \n+
    \n+
    77
    \n+
    78}
    \n+
    79
    \n+
    80#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    Definition dualq1localinterpolation.hh:21
    \n+
    void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localinterpolation.hh:24
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualq1localinterpolation.hh:32
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,282 +1,106 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_DUAL_Q1_LOCALINTERPOLATION_HH\n+6#define DUNE_DUAL_Q1_LOCALINTERPOLATION_HH\n 7\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+8#include \n+9#include \n+10\n+11#include \n+12#include \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_\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+19 template\n+_\b2_\b0 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+21 {\n+22 public:\n+23\n+_\b2_\b4 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,(1<& coefficients)\n+25 {\n+26 coefficients_ = coefficients;\n+27 }\n+28\n+29\n+31 template\n+_\b3_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+33 {\n+34 typename LB::Traits::DomainType x;\n+35\n+36 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+37\n+38 const int size = 1< q1Coefficients;\n+42\n+43 for (int i=0; i< (1< mat;\n+59\n+60 for (int i=0; i& 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-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-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+64 // now solve for the weights\n+65 Dune::FieldVector sol(0);\n+66\n+67 mat.solve(sol,q1Coefficients);\n+68\n+69 // write result in out vector\n+70 for (int i=0; i\n+,(1< coefficients_;\n+76 };\n+77\n+78}\n+79\n+80#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:34\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:42\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-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+_\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:21\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:24\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 &ff, 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:32\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/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: hierarchicalprismp2localinterpolation.hh File Reference\n+dune-localfunctions: dualq1localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalprismp2localinterpolation.hh File Reference
    \n+
    dualq1localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/localfunctions/common/localinterpolation.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::HierarchicalPrismP2LocalInterpolation< LB >
    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,21 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-hierarchicalprismp2localinterpolation.hh File Reference\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_\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_\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_\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/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: hierarchicalprismp2localinterpolation.hh Source File\n+dune-localfunctions: dualq1localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,108 +70,79 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalprismp2localinterpolation.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 (C) 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_DUAL_Q1_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-\n-
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    16 template<class LB>
    \n-
    \n-\n-
    18 {
    \n-
    19 public:
    \n-
    20
    \n-
    21 template<typename F, typename C>
    \n-
    \n-
    22 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    23 {
    \n-
    24 typename LB::Traits::DomainType x;
    \n-
    25 typename LB::Traits::RangeType y;
    \n-
    26 out.resize(18);
    \n-
    27
    \n-
    28 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n-
    29
    \n-
    30 //First the vertex dofs
    \n-
    31 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n-
    32 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);
    \n-
    33 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);
    \n-
    34 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);
    \n-
    35 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);
    \n-
    36 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);
    \n-
    37
    \n-
    38
    \n-
    39 // Then: the 9 edge dofs and the 3 face dofs
    \n-
    40 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    41 out[6] = y - 0.5*(out[0] + out[3]);
    \n-
    42
    \n-
    43 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    44 out[7] = y - 0.5*(out[1] + out[4]);
    \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+
    23 template <int dim>
    \n+
    \n+\n+
    25 {
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for (std::size_t i=0; i<(1<<dim); i++)
    \n+
    31 li[i] = LocalKey(i,dim,0);
    \n+
    32 }
    \n+
    \n+
    33
    \n+
    \n+
    35 std::size_t size () const
    \n+
    36 {
    \n+
    37 return 1<<dim;
    \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 x[0] = 0.0; x[1] = 1.0; x[2] = 0.5; y = f(x);
    \n-
    47 out[8] = y - 0.5*(out[2] + out[5]);
    \n-
    48
    \n-
    49 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n-
    50 out[9] = y - 0.5*(out[0] + out[1]);
    \n+
    46 private:
    \n+
    47 std::vector<LocalKey> li;
    \n+
    48 };
    \n+
    \n+
    49
    \n+
    50}
    \n
    51
    \n-
    52 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    53 out[10] = y - 0.5*(out[2] + out[0]);
    \n-
    54
    \n-
    55 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n-
    56 out[11] = y - 0.5*(out[2] + out[1]);
    \n-
    57
    \n-
    58 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);
    \n-
    59 out[12] = y - 0.5*(out[3] + out[4]);
    \n-
    60
    \n-
    61 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n-
    62 out[13] = y - 0.5*(out[3] + out[5]);
    \n-
    63
    \n-
    64 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n-
    65 out[14] = y - 0.5*(out[4] + out[5]);
    \n-
    66
    \n-
    67
    \n-
    68 //faces
    \n-
    69 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n-
    70 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );
    \n-
    71
    \n-
    72 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n-
    73 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );
    \n-
    74
    \n-
    75 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n-
    76 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );
    \n-
    77
    \n-
    78 }
    \n-
    \n-
    79 };
    \n-
    \n-
    80}
    \n-
    81
    \n-
    82#endif
    \n+
    52#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition hierarchicalprismp2localinterpolation.hh:18
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition hierarchicalprismp2localinterpolation.hh:22
    \n-\n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:25
    \n+
    std::size_t size() const
    number of coefficients
    Definition dualq1localcoefficients.hh:35
    \n+
    DualQ1LocalCoefficients()
    Standard constructor.
    Definition dualq1localcoefficients.hh:28
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualq1localcoefficients.hh:41
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,100 +1,77 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_DUAL_Q1_LOCALCOEFFICIENTS_HH\n+6#define DUNE_DUAL_Q1_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-10\n-11namespace _\bD_\bu_\bn_\be\n-12{\n-16 template\n-_\b1_\b7 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-18 {\n-19 public:\n-20\n-21 template\n-_\b2_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-23 {\n-24 typename LB::Traits::DomainType x;\n-25 typename LB::Traits::RangeType y;\n-26 out.resize(18);\n-27\n-28 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-29\n-30 //First the vertex dofs\n-31 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);\n-32 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);\n-33 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);\n-34 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);\n-35 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);\n-36 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);\n-37\n-38\n-39 // Then: the 9 edge dofs and the 3 face dofs\n-40 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-41 out[6] = y - 0.5*(out[0] + out[3]);\n-42\n-43 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-44 out[7] = y - 0.5*(out[1] + out[4]);\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+23 template \n+_\b2_\b4 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+25 {\n+26 public:\n+_\b2_\b8 _\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+48 };\n+49\n+50}\n 51\n-52 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);\n-53 out[10] = y - 0.5*(out[2] + out[0]);\n-54\n-55 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);\n-56 out[11] = y - 0.5*(out[2] + out[1]);\n-57\n-58 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);\n-59 out[12] = y - 0.5*(out[3] + out[4]);\n-60\n-61 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);\n-62 out[13] = y - 0.5*(out[3] + out[5]);\n-63\n-64 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);\n-65 out[14] = y - 0.5*(out[4] + out[5]);\n-66\n-67\n-68 //faces\n-69 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);\n-70 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );\n-71\n-72 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);\n-73 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );\n-74\n-75 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);\n-76 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );\n-77\n-78 }\n-79 };\n-80}\n-81\n-82#endif\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:_\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: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_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:22\n-_\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_\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:23\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:25\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:35\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:28\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: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/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: hierarchicalsimplexp2withelementbubble.hh File Reference\n+dune-localfunctions: dualq1localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,63 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    hierarchicalsimplexp2withelementbubble.hh File Reference
    \n+
    dualq1localbasis.hh File Reference
    \n
    \n
    \n-\n-

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

    \n-
    #include <numeric>
    \n-#include <vector>
    \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-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim >
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 1 >
     Hierarchical P2 basis in 1d. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 2 >
     Hierarchical P2 basis in 1d. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 3 >
     Hierarchical P2 basis in 1d. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >
     The local finite element needed for the Zou-Kornhuber estimator for Signorini problems. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LB >
    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-

    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,44 +1,25 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+dualq1localbasis.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_\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:_\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\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 _\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_\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 _\b2_\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_\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 _\b3_\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_\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 finite element needed for the Zou-Kornhuber estimator for\n- Signorini problems. _\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>\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-*\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/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: hierarchicalsimplexp2withelementbubble.hh Source File\n+dune-localfunctions: dualq1localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,496 +70,171 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchicalsimplexp2withelementbubble.hh
    \n+
    dualq1localbasis.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 (C) 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_LOCALBASIS_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALBASIS_HH
    \n
    7
    \n-
    12#include <numeric>
    \n-
    13#include <vector>
    \n-
    14
    \n-
    15#include <dune/common/fvector.hh>
    \n-
    16#include <dune/common/fmatrix.hh>
    \n-
    17
    \n-\n-\n-\n-
    21
    \n-
    22namespace Dune
    \n-
    23{
    \n-
    24 template<class D, class R, int dim>
    \n-
    \n-\n-
    26 {
    \n-
    27 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 DUNE_THROW(Dune::NotImplemented,"HierarchicalSimplexP2LocalBasis not implemented for dim > 3.");
    \n-
    31 }
    \n-
    \n-
    32 };
    \n-
    \n+
    8#include <array>
    \n+
    9#include <numeric>
    \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+
    27 template<class D, class R, int dim>
    \n+
    \n+\n+
    29 {
    \n+
    30 public:
    \n+
    31 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n+
    32 Dune::FieldMatrix<R,1,dim> > Traits;
    \n
    33
    \n-
    48 template<class D, class R>
    \n-
    \n-\n-
    50 {
    \n-
    51 public:
    \n-
    53 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n-
    54 Dune::FieldMatrix<R,1,1> > Traits;
    \n+
    \n+
    34 void setCoefficients(const std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)>& coefficients)
    \n+
    35 {
    \n+
    36 coefficients_ = coefficients;
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    \n+
    40 unsigned int size () const
    \n+
    41 {
    \n+
    42 return 1<<dim;
    \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 // compute q1 values
    \n+
    50 std::vector<typename Traits::RangeType> q1Values(size());
    \n+
    51
    \n+
    52 for (size_t i=0; i<size(); i++) {
    \n+
    53
    \n+
    54 q1Values[i] = 1;
    \n
    55
    \n-
    \n-
    57 unsigned int size () const
    \n-
    58 {
    \n-
    59 return 3;
    \n-
    60 }
    \n-
    \n+
    56 for (int j=0; j<dim; j++)
    \n+
    57 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n+
    58 q1Values[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n+
    59
    \n+
    60 }
    \n
    61
    \n-
    \n-
    63 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    64 std::vector<typename Traits::RangeType>& out) const
    \n-
    65 {
    \n-
    66 out.resize(3);
    \n-
    67
    \n-
    68 out[0] = 1-in[0];
    \n-
    69 out[1] = in[0];
    \n-
    70 out[2] = 1-4*(in[0]-0.5)*(in[0]-0.5);
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    74 inline void
    \n-
    \n-
    75 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    76 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    77 {
    \n-
    78 out.resize(3);
    \n-
    79
    \n-
    80 out[0][0][0] = -1;
    \n-
    81 out[1][0][0] = 1;
    \n-
    82 out[2][0][0] = 4-8*in[0];
    \n-
    83 }
    \n-
    \n+
    62 // compute the dual values by using that they are linear combinations of q1 functions
    \n+
    63 out.resize(size());
    \n+
    64 for (size_t i=0; i<size(); i++)
    \n+
    65 out[i] = 0;
    \n+
    66
    \n+
    67 for (size_t i=0; i<size(); i++)
    \n+
    68 for (size_t j=0; j<size(); j++)
    \n+
    69 out[i] += coefficients_[i][j]*q1Values[j];
    \n+
    70
    \n+
    71
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    75 inline void
    \n+
    \n+
    76 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    77 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    78 {
    \n+
    79 // compute q1 jacobians
    \n+
    80 std::vector<typename Traits::JacobianType> q1Jacs(size());
    \n+
    81
    \n+
    82 // Loop over all shape functions
    \n+
    83 for (size_t i=0; i<size(); i++) {
    \n
    84
    \n-
    \n-
    86 void partial (const std::array<unsigned int, 1>& order,
    \n-
    87 const typename Traits::DomainType& in, // position
    \n-
    88 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    89 {
    \n-
    90 auto totalOrder = order[0];
    \n-
    91 if (totalOrder == 0) {
    \n-
    92 evaluateFunction(in, out);
    \n-
    93 } else if (totalOrder == 1) {
    \n-
    94 out.resize(size());
    \n-
    95 out[0] = -1;
    \n-
    96 out[1] = 1;
    \n-
    97 out[2] = 4-8*in[0];
    \n-
    98 } else if (totalOrder == 2) {
    \n-
    99 out.resize(size());
    \n-
    100 out[0] = 0;
    \n-
    101 out[1] = 0;
    \n-
    102 out[2] =-8;
    \n-
    103 } else {
    \n-
    104 out.resize(size());
    \n-
    105 out[0] = out[1] = out[2] = 0;
    \n-
    106 }
    \n-
    107 }
    \n-
    \n+
    85 // Loop over all coordinate directions
    \n+
    86 for (int j=0; j<dim; j++) {
    \n+
    87
    \n+
    88 // Initialize: the overall expression is a product
    \n+
    89 // if j-th bit of i is set to -1, else 1
    \n+
    90 q1Jacs[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n+
    91
    \n+
    92 for (int k=0; k<dim; k++) {
    \n+
    93
    \n+
    94 if (j!=k)
    \n+
    95 // if k-th bit of i is set multiply with in[j], else with 1-in[j]
    \n+
    96 q1Jacs[i][0][j] *= (i & (1<<k)) ? in[k] : 1-in[k];
    \n+
    97
    \n+
    98 }
    \n+
    99
    \n+
    100 }
    \n+
    101
    \n+
    102 }
    \n+
    103
    \n+
    104 // compute the dual jacobians by using that they are linear combinations of q1 functions
    \n+
    105 out.resize(size());
    \n+
    106 for (size_t i=0; i<size(); i++)
    \n+
    107 out[i] = 0;
    \n
    108
    \n-
    \n-
    111 unsigned int order () const
    \n-
    112 {
    \n-
    113 return 2;
    \n-
    114 }
    \n-
    \n-
    115
    \n-
    116 };
    \n-
    \n-
    117
    \n-
    138 template<class D, class R>
    \n-
    \n-\n-
    140 {
    \n-
    141 public:
    \n-
    143 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n-
    144 Dune::FieldMatrix<R,1,2> > Traits;
    \n-
    145
    \n-
    \n-
    147 unsigned int size () const
    \n-
    148 {
    \n-
    149 return 7;
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    \n-
    153 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    154 std::vector<typename Traits::RangeType>& out) const
    \n-
    155 {
    \n-
    156 out.resize(7);
    \n-
    157
    \n-
    158 out[0] = 1 - in[0] - in[1];
    \n-
    159 out[1] = 4*in[0]*(1-in[0]-in[1]);
    \n-
    160 out[2] = in[0];
    \n-
    161 out[3] = 4*in[1]*(1-in[0]-in[1]);
    \n-
    162 out[4] = 4*in[0]*in[1];
    \n-
    163 out[5] = in[1];
    \n-
    164 out[6] = 27*in[0]*in[1]*(1-in[0]-in[1]);
    \n-
    165
    \n-
    166 }
    \n-
    \n-
    167
    \n-
    169 inline void
    \n-
    \n-
    170 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    171 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    172 {
    \n-
    173 out.resize(7);
    \n-
    174
    \n-
    175 out[0][0][0] = -1; out[0][0][1] = -1;
    \n-
    176 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];
    \n-
    177 out[2][0][0] = 1; out[2][0][1] = 0;
    \n-
    178 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];
    \n-
    179 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];
    \n-
    180 out[5][0][0] = 0; out[5][0][1] = 1;
    \n-
    181
    \n-
    182 // Cubic bubble
    \n-
    183 out[6][0][0] = 27 * in[1] * (1 - 2*in[0] - in[1]);
    \n-
    184 out[6][0][1] = 27 * in[0] * (1 - 2*in[1] - in[0]);
    \n-
    185
    \n-
    186 }
    \n-
    \n-
    187
    \n-
    \n-
    189 void partial (const std::array<unsigned int, 2>& order,
    \n-
    190 const typename Traits::DomainType& in, // position
    \n-
    191 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    192 {
    \n-
    193 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    194 if (totalOrder == 0) {
    \n-
    195 evaluateFunction(in, out);
    \n-
    196 } else if (totalOrder == 1) {
    \n-
    197 out.resize(size());
    \n-
    198 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    199
    \n-
    200 switch (direction) {
    \n-
    201 case 0:
    \n-
    202 out[0] = -1;
    \n-
    203 out[1] = 4-8*in[0]-4*in[1];
    \n-
    204 out[2] = 1;
    \n-
    205 out[3] = -4*in[1];
    \n-
    206 out[4] = 4*in[1];
    \n-
    207 out[5] = 0;
    \n-
    208 out[6] = 27 * in[1] * (1 - 2*in[0] - in[1]);
    \n-
    209 break;
    \n-
    210 case 1:
    \n-
    211 out[0] = -1;
    \n-
    212 out[1] = -4*in[0];
    \n-
    213 out[2] = 0;
    \n-
    214 out[3] = 4-4*in[0]-8*in[1];
    \n-
    215 out[4] = 4*in[0];
    \n-
    216 out[5] = 1;
    \n-
    217 out[6] = 27 * in[0] * (1 - 2*in[1] - in[0]);
    \n-
    218 break;
    \n-
    219 default:
    \n-
    220 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    221 }
    \n-
    222 } else {
    \n-
    223 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    224 }
    \n-
    225 }
    \n-
    \n-
    226
    \n-
    \n-
    229 unsigned int order () const
    \n-
    230 {
    \n-
    231 return 3;
    \n-
    232 }
    \n-
    \n-
    233
    \n-
    234 };
    \n-
    \n-
    235
    \n-
    260 template<class D, class R>
    \n-
    \n-\n-
    262 {
    \n-
    263 public:
    \n-
    265 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n-
    266 Dune::FieldMatrix<R,1,3> > Traits;
    \n-
    267
    \n-
    \n-
    269 unsigned int size () const
    \n-
    270 {
    \n-
    271 return 11;
    \n-
    272 }
    \n-
    \n-
    273
    \n-
    \n-
    275 void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    276 std::vector<typename Traits::RangeType>& out) const
    \n-
    277 {
    \n-
    278 out.resize(10);
    \n-
    279
    \n-
    280 out[0] = 1 - in[0] - in[1] - in[2];
    \n-
    281 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);
    \n-
    282 out[2] = in[0];
    \n-
    283 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);
    \n-
    284 out[4] = 4 * in[0] * in[1];
    \n-
    285 out[5] = in[1];
    \n-
    286 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);
    \n-
    287 out[7] = 4 * in[0] * in[2];
    \n-
    288 out[8] = 4 * in[1] * in[2];
    \n-
    289 out[9] = in[2];
    \n-
    290
    \n-
    291 // quartic element bubble
    \n-
    292 out[10] = 81*in[0]*in[1]*in[2]*(1-in[0]-in[1]-in[2]);
    \n-
    293 }
    \n-
    \n-
    294
    \n-
    \n-
    296 void evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    297 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    298 {
    \n-
    299 out.resize(10);
    \n-
    300
    \n-
    301 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;
    \n-
    302 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-
    303 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;
    \n-
    304 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-
    305 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;
    \n-
    306 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;
    \n-
    307 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-
    308 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];
    \n-
    309 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];
    \n-
    310 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;
    \n-
    311
    \n-
    312 out[10][0][0] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);
    \n-
    313 out[10][0][1] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);
    \n-
    314 out[10][0][2] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);
    \n-
    315 }
    \n-
    \n-
    316
    \n-
    \n-
    318 void partial (const std::array<unsigned int, 3>& order,
    \n-
    319 const typename Traits::DomainType& in, // position
    \n-
    320 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    321 {
    \n-
    322 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    323 if (totalOrder == 0) {
    \n-
    324 evaluateFunction(in, out);
    \n-
    325 } else if (totalOrder == 1) {
    \n-
    326 out.resize(size());
    \n-
    327 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    328
    \n-
    329 switch (direction) {
    \n-
    330 case 0:
    \n-
    331 out[0] = -1;
    \n-
    332 out[1] = 4-8*in[0]-4*in[1]-4*in[2];
    \n-
    333 out[2] = 1;
    \n-
    334 out[3] = -4*in[1];
    \n-
    335 out[4] = 4*in[1];
    \n-
    336 out[5] = 0;
    \n-
    337 out[6] = -4*in[2];
    \n-
    338 out[7] = 4*in[2];
    \n-
    339 out[8] = 0;
    \n-
    340 out[9] = 0;
    \n-
    341 out[10] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);
    \n-
    342 break;
    \n-
    343 case 1:
    \n-
    344 out[0] = -1;
    \n-
    345 out[1] = -4*in[0];
    \n-
    346 out[2] = 0;
    \n-
    347 out[3] = 4-4*in[0]-8*in[1]-4*in[2];
    \n-
    348 out[4] = 4*in[0];
    \n-
    349 out[5] = 1;
    \n-
    350 out[6] = -4*in[2];
    \n-
    351 out[7] = 0;
    \n-
    352 out[8] = 4*in[2];
    \n-
    353 out[9] = 0;
    \n-
    354 out[10] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);
    \n-
    355 break;
    \n-
    356 case 2:
    \n-
    357 out[0] = -1;
    \n-
    358 out[1] = -4*in[0];
    \n-
    359 out[2] = 0;
    \n-
    360 out[3] = -4*in[1];
    \n-
    361 out[4] = 0;
    \n-
    362 out[5] = 0;
    \n-
    363 out[6] = 4-4*in[0]-4*in[1]-8*in[2];
    \n-
    364 out[7] = 4*in[0];
    \n-
    365 out[8] = 4*in[1];
    \n-
    366 out[9] = 1;
    \n-
    367 out[10] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);
    \n-
    368 break;
    \n-
    369 default:
    \n-
    370 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    371 }
    \n-
    372 } else {
    \n-
    373 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    374 }
    \n-
    375 }
    \n-
    \n-
    376
    \n-
    \n-
    379 unsigned int order () const
    \n-
    380 {
    \n-
    381 return 4;
    \n-
    382 }
    \n-
    \n-
    383
    \n-
    384 };
    \n-
    \n-
    385
    \n-
    386
    \n-
    412 template <int dim>
    \n-
    \n-\n-
    414 {
    \n-
    415 // The binomial coefficient: dim+1 over 1
    \n-
    416 static const int numVertices = dim+1;
    \n-
    417
    \n-
    418 // The binomial coefficient: dim+1 over 2
    \n-
    419 static const int numEdges = (dim+1)*dim / 2;
    \n-
    420
    \n-
    421 public:
    \n-
    \n-\n-
    424 : li(numVertices+numEdges + 1)
    \n-
    425 {
    \n-
    426 if (dim!=2)
    \n-
    427 DUNE_THROW(NotImplemented, "only for 2d");
    \n-
    428
    \n-
    429 li[0] = Dune::LocalKey(0,2,0); // Vertex (0,0)
    \n-
    430 li[1] = Dune::LocalKey(0,1,0); // Edge (0.5, 0)
    \n-
    431 li[2] = Dune::LocalKey(1,2,0); // Vertex (1,0)
    \n-
    432 li[3] = Dune::LocalKey(1,1,0); // Edge (0, 0.5)
    \n-
    433 li[4] = Dune::LocalKey(2,1,0); // Edge (0.5, 0.5)
    \n-
    434 li[5] = Dune::LocalKey(2,2,0); // Vertex (0,1)
    \n-
    435 li[6] = Dune::LocalKey(0,0,0); // Element (1/3, 1/3)
    \n-
    436 }
    \n-
    \n-
    437
    \n-
    \n-
    439 size_t size () const
    \n-
    440 {
    \n-
    441 return numVertices+numEdges + 1;
    \n-
    442 }
    \n-
    \n-
    443
    \n-
    \n-
    445 const Dune::LocalKey& localKey (size_t i) const
    \n-
    446 {
    \n-
    447 return li[i];
    \n-
    448 }
    \n-
    \n-
    449
    \n-
    450 private:
    \n-
    451 std::vector<Dune::LocalKey> li;
    \n-
    452 };
    \n-
    \n-
    453
    \n-
    454 template<class LB>
    \n-
    \n-\n-
    456 {
    \n-
    457 public:
    \n-
    458
    \n-
    460 template<typename F, typename C>
    \n-
    \n-
    461 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    462 {
    \n-
    463 typename LB::Traits::DomainType x;
    \n-
    464 typename LB::Traits::RangeType y;
    \n-
    465
    \n-
    466 out.resize(7);
    \n-
    467
    \n-
    468 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n-
    469
    \n-
    470 // vertices
    \n-
    471 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);
    \n-
    472 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);
    \n-
    473 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);
    \n-
    474
    \n-
    475 // edge bubbles
    \n-
    476 x[0] = 0.5; x[1] = 0.0; y = f(x);
    \n-
    477 out[1] = y - out[0]*(1-x[0]) - out[2]*x[0];
    \n-
    478
    \n-
    479 x[0] = 0.0; x[1] = 0.5; y = f(x);
    \n-
    480 out[3] = y - out[0]*(1-x[1]) - out[5]*x[1];
    \n-
    481
    \n-
    482 x[0] = 0.5; x[1] = 0.5; y = f(x);
    \n-
    483 out[4] = y - out[2]*x[0] - out[5]*x[1];
    \n-
    484
    \n-
    485 // element bubble
    \n-
    486 x[0] = 1.0/3; x[1] = 1.0/3; y = f(x);
    \n-
    487
    \n-\n-
    490 std::vector<typename LB::Traits::RangeType> sfValues;
    \n-
    491 shapeFunctions.evaluateFunction(x, sfValues);
    \n-
    492
    \n-
    493 out[6] = y;
    \n-
    494 for (int i=0; i<6; i++)
    \n-
    495 out[6] -= out[i]*sfValues[i];
    \n-
    496
    \n-
    497 }
    \n-
    \n-
    498
    \n-
    499 };
    \n-
    \n-
    500
    \n-
    501
    \n-
    502}
    \n-
    503#endif
    \n-\n+
    109 for (size_t i=0; i<size(); i++)
    \n+
    110 for (size_t j=0; j<size(); j++)
    \n+
    111 out[i].axpy(coefficients_[i][j],q1Jacs[j]);
    \n+
    112
    \n+
    113 }
    \n+
    \n+
    114
    \n+
    \n+
    116 void partial (const std::array<unsigned int, dim>& order,
    \n+
    117 const typename Traits::DomainType& in, // position
    \n+
    118 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    119 {
    \n+
    120 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    121 if (totalOrder == 0) {
    \n+
    122 evaluateFunction(in, out);
    \n+
    123 } else {
    \n+
    124 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    125 }
    \n+
    126 }
    \n+
    \n+
    127
    \n+
    \n+
    129 unsigned int order () const
    \n+
    130 {
    \n+
    131 return 1;
    \n+
    132 }
    \n+
    \n+
    133
    \n+
    134 private:
    \n+
    135 std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)> coefficients_;
    \n+
    136 };
    \n+
    \n+
    137}
    \n+
    138#endif
    \n
    Definition bdfmcube.hh:18
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Definition hierarchicalsimplexp2withelementbubble.hh:26
    \n-
    HierarchicalSimplexP2WithElementBubbleLocalBasis()
    Definition hierarchicalsimplexp2withelementbubble.hh:28
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:75
    \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 hierarchicalsimplexp2withelementbubble.hh:54
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:63
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (2, in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:111
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2withelementbubble.hh:57
    \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 hierarchicalsimplexp2withelementbubble.hh:86
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2withelementbubble.hh:147
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (3 in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:229
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:153
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:170
    \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 hierarchicalsimplexp2withelementbubble.hh:189
    \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 hierarchicalsimplexp2withelementbubble.hh:144
    \n-
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2withelementbubble.hh:269
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:275
    \n-
    unsigned int order() const
    Polynomial order of the shape functions (4 in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:379
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:296
    \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 hierarchicalsimplexp2withelementbubble.hh:318
    \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 hierarchicalsimplexp2withelementbubble.hh:266
    \n-
    The local finite element needed for the Zou-Kornhuber estimator for Signorini problems.
    Definition hierarchicalsimplexp2withelementbubble.hh:414
    \n-
    size_t size() const
    number of coefficients
    Definition hierarchicalsimplexp2withelementbubble.hh:439
    \n-
    const Dune::LocalKey & localKey(size_t i) const
    get i'th index
    Definition hierarchicalsimplexp2withelementbubble.hh:445
    \n-
    HierarchicalSimplexP2WithElementBubbleLocalCoefficients()
    Standard constructor.
    Definition hierarchicalsimplexp2withelementbubble.hh:423
    \n-
    Definition hierarchicalsimplexp2withelementbubble.hh:456
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Local interpolation of a function.
    Definition hierarchicalsimplexp2withelementbubble.hh:461
    \n+
    Dual Lagrange shape functions of order 1 on the reference cube.
    Definition dualq1localbasis.hh:29
    \n+
    unsigned int size() const
    number of shape functions
    Definition dualq1localbasis.hh:40
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualq1localbasis.hh:129
    \n+
    void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localbasis.hh:34
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualq1localbasis.hh:46
    \n+
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    Definition dualq1localbasis.hh:32
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualq1localbasis.hh:76
    \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:116
    \n \n-\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,547 +1,185 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n 2// vi: set et ts=4 sw=2 sts=2:\n 3// SPDX-FileCopyrightInfo: Copyright (C) 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_LOCALBASIS_HH\n+6#define DUNE_DUAL_Q1_LOCALBASIS_HH\n 7\n-12#include \n-13#include \n-14\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_\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_\bk_\be_\by_\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-21\n-22namespace _\bD_\bu_\bn_\be\n-23{\n-24 template\n-_\b2_\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-26 {\n-27 public:\n-_\b2_\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_\bB_\ba_\bs_\bi_\bs()\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+27 template\n+_\b2_\b8 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n 29 {\n-30 DUNE_THROW(Dune::NotImplemented,\"HierarchicalSimplexP2LocalBasis not\n-implemented for dim > 3.\");\n-31 }\n-32 };\n-33\n-48 template\n-_\b4_\b9 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-50 {\n-51 public:\n-53 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+30 public:\n+31 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-_\b5_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+_\b3_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+33\n+_\b3_\b4 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,\n+(1<& coefficients)\n+35 {\n+36 coefficients_ = coefficients;\n+37 }\n+38\n+_\b4_\b0 unsigned int _\bs_\bi_\bz_\be () const\n+41 {\n+42 return 1<& out) const\n+48 {\n+49 // compute q1 values\n+50 std::vector q1Values(_\bs_\bi_\bz_\be());\n+51\n+52 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\n+53\n+54 q1Values[i] = 1;\n 55\n-_\b5_\b7 unsigned int _\bs_\bi_\bz_\be () const\n-58 {\n-59 return 3;\n+56 for (int j=0; j& out) const\n-65 {\n-66 out.resize(3);\n-67\n-68 out[0] = 1-in[0];\n-69 out[1] = in[0];\n-70 out[2] = 1-4*(in[0]-0.5)*(in[0]-0.5);\n-71 }\n-72\n-74 inline void\n-_\b7_\b5 _\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-76 std::vector& out) const // return value\n-77 {\n-78 out.resize(3);\n-79\n-80 out[0][0][0] = -1;\n-81 out[1][0][0] = 1;\n-82 out[2][0][0] = 4-8*in[0];\n-83 }\n+62 // compute the dual values by using that they are linear combinations of q1\n+functions\n+63 out.resize(_\bs_\bi_\bz_\be());\n+64 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n+65 out[i] = 0;\n+66\n+67 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n+68 for (size_t j=0; j<_\bs_\bi_\bz_\be(); j++)\n+69 out[i] += coefficients_[i][j]*q1Values[j];\n+70\n+71\n+72 }\n+73\n+75 inline void\n+_\b7_\b6 _\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+77 std::vector& out) const // return value\n+78 {\n+79 // compute q1 jacobians\n+80 std::vector q1Jacs(_\bs_\bi_\bz_\be());\n+81\n+82 // Loop over all shape functions\n+83 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\n 84\n-_\b8_\b6 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-87 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-88 std::vector& out) const // return value\n-89 {\n-90 auto totalOrder = order[0];\n-91 if (totalOrder == 0) {\n-92 evaluateFunction(in, out);\n-93 } else if (totalOrder == 1) {\n-94 out.resize(size());\n-95 out[0] = -1;\n-96 out[1] = 1;\n-97 out[2] = 4-8*in[0];\n-98 } else if (totalOrder == 2) {\n-99 out.resize(size());\n-100 out[0] = 0;\n-101 out[1] = 0;\n-102 out[2] =-8;\n-103 } else {\n-104 out.resize(size());\n-105 out[0] = out[1] = out[2] = 0;\n-106 }\n-107 }\n+85 // Loop over all coordinate directions\n+86 for (int j=0; j\n-_\b1_\b3_\b9 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-140 {\n-141 public:\n-143 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_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-145\n-_\b1_\b4_\b7 unsigned int _\bs_\bi_\bz_\be () const\n-148 {\n-149 return 7;\n-150 }\n-151\n-_\b1_\b5_\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-154 std::vector& out) const\n-155 {\n-156 out.resize(7);\n-157\n-158 out[0] = 1 - in[0] - in[1];\n-159 out[1] = 4*in[0]*(1-in[0]-in[1]);\n-160 out[2] = in[0];\n-161 out[3] = 4*in[1]*(1-in[0]-in[1]);\n-162 out[4] = 4*in[0]*in[1];\n-163 out[5] = in[1];\n-164 out[6] = 27*in[0]*in[1]*(1-in[0]-in[1]);\n-165\n-166 }\n-167\n-169 inline void\n-_\b1_\b7_\b0 _\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-171 std::vector& out) const // return value\n-172 {\n-173 out.resize(7);\n-174\n-175 out[0][0][0] = -1; out[0][0][1] = -1;\n-176 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];\n-177 out[2][0][0] = 1; out[2][0][1] = 0;\n-178 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];\n-179 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];\n-180 out[5][0][0] = 0; out[5][0][1] = 1;\n-181\n-182 // Cubic bubble\n-183 out[6][0][0] = 27 * in[1] * (1 - 2*in[0] - in[1]);\n-184 out[6][0][1] = 27 * in[0] * (1 - 2*in[1] - in[0]);\n-185\n-186 }\n-187\n-_\b1_\b8_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-190 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-191 std::vector& out) const // return value\n-192 {\n-193 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-194 if (totalOrder == 0) {\n-195 evaluateFunction(in, out);\n-196 } else if (totalOrder == 1) {\n-197 out.resize(size());\n-198 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-199\n-200 switch (direction) {\n-201 case 0:\n-202 out[0] = -1;\n-203 out[1] = 4-8*in[0]-4*in[1];\n-204 out[2] = 1;\n-205 out[3] = -4*in[1];\n-206 out[4] = 4*in[1];\n-207 out[5] = 0;\n-208 out[6] = 27 * in[1] * (1 - 2*in[0] - in[1]);\n-209 break;\n-210 case 1:\n-211 out[0] = -1;\n-212 out[1] = -4*in[0];\n-213 out[2] = 0;\n-214 out[3] = 4-4*in[0]-8*in[1];\n-215 out[4] = 4*in[0];\n-216 out[5] = 1;\n-217 out[6] = 27 * in[0] * (1 - 2*in[1] - in[0]);\n-218 break;\n-219 default:\n-220 DUNE_THROW(RangeError, \"Component out of range.\");\n-221 }\n-222 } else {\n-223 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-224 }\n-225 }\n-226\n-_\b2_\b2_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-230 {\n-231 return 3;\n-232 }\n-233\n-234 };\n-235\n-260 template\n-_\b2_\b6_\b1 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-262 {\n-263 public:\n-265 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_\b6_\b6 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-267\n-_\b2_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-270 {\n-271 return 11;\n-272 }\n-273\n-_\b2_\b7_\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-276 std::vector& out) const\n-277 {\n-278 out.resize(10);\n-279\n-280 out[0] = 1 - in[0] - in[1] - in[2];\n-281 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);\n-282 out[2] = in[0];\n-283 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);\n-284 out[4] = 4 * in[0] * in[1];\n-285 out[5] = in[1];\n-286 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);\n-287 out[7] = 4 * in[0] * in[2];\n-288 out[8] = 4 * in[1] * in[2];\n-289 out[9] = in[2];\n-290\n-291 // quartic element bubble\n-292 out[10] = 81*in[0]*in[1]*in[2]*(1-in[0]-in[1]-in[2]);\n-293 }\n-294\n-_\b2_\b9_\b6 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-297 std::vector& out) const // return value\n-298 {\n-299 out.resize(10);\n-300\n-301 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;\n-302 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-303 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;\n-304 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-305 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;\n-306 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;\n-307 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-308 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];\n-309 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];\n-310 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;\n-311\n-312 out[10][0][0] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);\n-313 out[10][0][1] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);\n-314 out[10][0][2] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);\n-315 }\n-316\n-_\b3_\b1_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n-319 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-320 std::vector& out) const // return value\n-321 {\n-322 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-323 if (totalOrder == 0) {\n-324 evaluateFunction(in, out);\n-325 } else if (totalOrder == 1) {\n-326 out.resize(size());\n-327 auto const direction = std::distance(order.begin(), std::find(order.begin\n-(), order.end(), 1));\n-328\n-329 switch (direction) {\n-330 case 0:\n-331 out[0] = -1;\n-332 out[1] = 4-8*in[0]-4*in[1]-4*in[2];\n-333 out[2] = 1;\n-334 out[3] = -4*in[1];\n-335 out[4] = 4*in[1];\n-336 out[5] = 0;\n-337 out[6] = -4*in[2];\n-338 out[7] = 4*in[2];\n-339 out[8] = 0;\n-340 out[9] = 0;\n-341 out[10] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);\n-342 break;\n-343 case 1:\n-344 out[0] = -1;\n-345 out[1] = -4*in[0];\n-346 out[2] = 0;\n-347 out[3] = 4-4*in[0]-8*in[1]-4*in[2];\n-348 out[4] = 4*in[0];\n-349 out[5] = 1;\n-350 out[6] = -4*in[2];\n-351 out[7] = 0;\n-352 out[8] = 4*in[2];\n-353 out[9] = 0;\n-354 out[10] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);\n-355 break;\n-356 case 2:\n-357 out[0] = -1;\n-358 out[1] = -4*in[0];\n-359 out[2] = 0;\n-360 out[3] = -4*in[1];\n-361 out[4] = 0;\n-362 out[5] = 0;\n-363 out[6] = 4-4*in[0]-4*in[1]-8*in[2];\n-364 out[7] = 4*in[0];\n-365 out[8] = 4*in[1];\n-366 out[9] = 1;\n-367 out[10] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);\n-368 break;\n-369 default:\n-370 DUNE_THROW(RangeError, \"Component out of range.\");\n-371 }\n-372 } else {\n-373 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-374 }\n-375 }\n-376\n-_\b3_\b7_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-380 {\n-381 return 4;\n-382 }\n-383\n-384 };\n-385\n-386\n-412 template \n-_\b4_\b1_\b3 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-414 {\n-415 // The binomial coefficient: dim+1 over 1\n-416 static const int numVertices = dim+1;\n-417\n-418 // The binomial coefficient: dim+1 over 2\n-419 static const int numEdges = (dim+1)*dim / 2;\n-420\n-421 public:\n-_\b4_\b2_\b3 _\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-424 : li(numVertices+numEdges + 1)\n-425 {\n-426 if (dim!=2)\n-427 DUNE_THROW(NotImplemented, \"only for 2d\");\n-428\n-429 li[0] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,2,0); // Vertex (0,0)\n-430 li[1] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,1,0); // Edge (0.5, 0)\n-431 li[2] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(1,2,0); // Vertex (1,0)\n-432 li[3] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(1,1,0); // Edge (0, 0.5)\n-433 li[4] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(2,1,0); // Edge (0.5, 0.5)\n-434 li[5] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(2,2,0); // Vertex (0,1)\n-435 li[6] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0); // Element (1/3, 1/3)\n-436 }\n-437\n-_\b4_\b3_\b9 size_t _\bs_\bi_\bz_\be () const\n-440 {\n-441 return numVertices+numEdges + 1;\n-442 }\n-443\n-_\b4_\b4_\b5 const _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (size_t i) const\n-446 {\n-447 return li[i];\n-448 }\n-449\n-450 private:\n-451 std::vector li;\n-452 };\n-453\n-454 template\n-_\b4_\b5_\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_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-456 {\n-457 public:\n-458\n-460 template\n-_\b4_\b6_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-462 {\n-463 typename LB::Traits::DomainType x;\n-464 typename LB::Traits::RangeType y;\n-465\n-466 out.resize(7);\n-467\n-468 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-469\n-470 // vertices\n-471 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);\n-472 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);\n-473 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);\n-474\n-475 // edge bubbles\n-476 x[0] = 0.5; x[1] = 0.0; y = f(x);\n-477 out[1] = y - out[0]*(1-x[0]) - out[2]*x[0];\n-478\n-479 x[0] = 0.0; x[1] = 0.5; y = f(x);\n-480 out[3] = y - out[0]*(1-x[1]) - out[5]*x[1];\n-481\n-482 x[0] = 0.5; x[1] = 0.5; y = f(x);\n-483 out[4] = y - out[2]*x[0] - out[5]*x[1];\n-484\n-485 // element bubble\n-486 x[0] = 1.0/3; x[1] = 1.0/3; y = f(x);\n-487\n-489 _\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_\bo_\bu_\bb_\bl_\be_\b,_\bd_\bo_\bu_\bb_\bl_\be_\b,_\b2_\b>\n-shapeFunctions;\n-490 std::vector sfValues;\n-491 shapeFunctions.evaluateFunction(x, sfValues);\n-492\n-493 out[6] = y;\n-494 for (int i=0; i<6; i++)\n-495 out[6] -= out[i]*sfValues[i];\n-496\n-497 }\n-498\n-499 };\n-500\n-501\n-502}\n-503#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+109 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n+110 for (size_t j=0; j<_\bs_\bi_\bz_\be(); j++)\n+111 out[i].axpy(coefficients_[i][j],q1Jacs[j]);\n+112\n+113 }\n+114\n+_\b1_\b1_\b6 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+117 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+118 std::vector& out) const // return value\n+119 {\n+120 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+121 if (totalOrder == 0) {\n+122 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+123 } else {\n+124 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+125 }\n+126 }\n+127\n+_\b1_\b2_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+130 {\n+131 return 1;\n+132 }\n+133\n+134 private:\n+135 std::array ,(1< coefficients_;\n+136 };\n+137}\n+138#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:34\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:42\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: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_\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-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:26\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:\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\n-HierarchicalSimplexP2WithElementBubbleLocalBasis()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:28\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 _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\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 hierarchicalsimplexp2withelementbubble.hh:75\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 _\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 hierarchicalsimplexp2withelementbubble.hh:54\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 _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:\n-_\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 hierarchicalsimplexp2withelementbubble.hh:63\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 _\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 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 _\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 hierarchicalsimplexp2withelementbubble.hh:57\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 _\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 hierarchicalsimplexp2withelementbubble.hh:86\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 _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bs_\bi_\bz_\be\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:29\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 hierarchicalsimplexp2withelementbubble.hh:147\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 _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:_\bo_\br_\bd_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:40\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 (3 in this case)\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_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn\n+Polynomial order of the shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:129\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:34\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 hierarchicalsimplexp2withelementbubble.hh:153\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 _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:\n-_\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 hierarchicalsimplexp2withelementbubble.hh:170\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 _\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 hierarchicalsimplexp2withelementbubble.hh:189\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 _\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 hierarchicalsimplexp2withelementbubble.hh:144\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 _\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 hierarchicalsimplexp2withelementbubble.hh:269\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 _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:\n-_\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 hierarchicalsimplexp2withelementbubble.hh:275\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 _\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 (4 in this case)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:379\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 _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:\n-_\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 dualq1localbasis.hh:46\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:32\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 hierarchicalsimplexp2withelementbubble.hh:296\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 _\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:76\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 hierarchicalsimplexp2withelementbubble.hh:318\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 _\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 hierarchicalsimplexp2withelementbubble.hh:266\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 finite element needed for the Zou-Kornhuber estimator for Signorini\n-problems.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:414\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-size_t size() const\n-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:439\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 Dune::LocalKey & localKey(size_t i) const\n-get i'th index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:445\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()\n-Standard constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:423\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:456\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-void interpolate(const F &ff, std::vector< C > &out) const\n-Local interpolation of a function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:461\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:116\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 ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: hierarchicalp2withelementbubble.hh File Reference\n+dune-localfunctions: dualpq1factory.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-
    hierarchicalp2withelementbubble.hh File Reference
    \n+
    dualpq1factory.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

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

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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-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+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/a00101_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00101_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: dualpq1factory.hh Source File\n \n \n \n \n \n \n \n@@ -70,119 +70,118 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    hierarchicalp2withelementbubble.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 (C) 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_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <map>
    \n
    9
    \n-\n-\n+\n+\n
    12
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n+\n+
    14
    \n+
    15namespace Dune {
    \n
    16
    \n-
    19 template<class D, class R, int dim>
    \n-
    \n-\n-
    21 {
    \n-
    22
    \n-
    23 static_assert(dim==2, "HierarchicalP2WithElementBubbleLocalFiniteElement only implemented for dim==2.");
    \n-
    24
    \n-
    25 public:
    \n-\n-\n-\n-
    31
    \n-\n-
    36
    \n-
    \n-
    39 const typename Traits::LocalBasisType& localBasis () const
    \n-
    40 {
    \n-
    41 return basis_;
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-\n-
    47 {
    \n-
    48 return coefficients_;
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-\n-
    54 {
    \n-
    55 return interpolation_;
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    \n-
    59 unsigned int size () const
    \n-
    60 {
    \n-
    61 return basis_.size();
    \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-
    63
    \n-
    \n-
    66 static constexpr GeometryType type ()
    \n-
    67 {
    \n-
    68 return GeometryTypes::triangle;
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    71 private:
    \n-\n-
    73
    \n-\n-
    75
    \n-\n-
    77 };
    \n-
    \n-
    78
    \n-
    79}
    \n-
    80
    \n-
    81#endif
    \n-
    Hierarchical p2 shape functions for the simplex.
    \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
    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 hierarchicalp2withelementbubble.hh:21
    \n-
    LocalFiniteElementTraits< HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim >, HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >, HierarchicalSimplexP2WithElementBubbleLocalInterpolation< HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > > > Traits
    Definition hierarchicalp2withelementbubble.hh:30
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition hierarchicalp2withelementbubble.hh:59
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition hierarchicalp2withelementbubble.hh:39
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition hierarchicalp2withelementbubble.hh:46
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition hierarchicalp2withelementbubble.hh:53
    \n-
    static constexpr GeometryType type()
    Definition hierarchicalp2withelementbubble.hh:66
    \n-
    HierarchicalP2WithElementBubbleLocalFiniteElement()
    Definition hierarchicalp2withelementbubble.hh:34
    \n-
    Definition hierarchicalsimplexp2withelementbubble.hh:26
    \n-
    The local finite element needed for the Zou-Kornhuber estimator for Signorini problems.
    Definition hierarchicalsimplexp2withelementbubble.hh:414
    \n-
    Definition hierarchicalsimplexp2withelementbubble.hh:456
    \n+
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:286
    \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,138 +1,137 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_HH\n+6#define DUNE_LOCALFUNCTIONS_DUAL_P1_Q1_FACTORY_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/_\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+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\n-14namespace _\bD_\bu_\bn_\be\n-15{\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-19 template\n-_\b2_\b0 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-21 {\n-22\n-23 static_assert(dim==2, \"HierarchicalP2WithElementBubbleLocalFiniteElement\n-only implemented for dim==2.\");\n-24\n-25 public:\n-28 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<_\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-29 _\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-_\b3_\b0\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<_\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-> > _\bT_\br_\ba_\bi_\bt_\bs;\n-31\n-_\b3_\b4 _\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-35 {}\n-36\n-_\b3_\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-40 {\n-41 return basis_;\n-42 }\n-43\n-_\b4_\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-47 {\n-48 return coefficients_;\n-49 }\n-50\n-_\b5_\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+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 return interpolation_;\n-56 }\n-57\n-_\b5_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-60 {\n-61 return basis_.size();\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\n-_\b6_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-67 {\n-68 return GeometryTypes::triangle;\n-69 }\n-70\n-71 private:\n-72 _\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> basis_;\n-73\n-74 _\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> coefficients_;\n-75\n-76\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<_\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-> interpolation_;\n-77 };\n-78\n-79}\n-80\n-81#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+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+_\bd_\bu_\ba_\bl_\bm_\bo_\br_\bt_\ba_\br_\bb_\ba_\bs_\bi_\bs_\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_\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_\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-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:21\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_\br_\ba_\bi_\bt_\bs\n-LocalFiniteElementTraits< HierarchicalSimplexP2WithElementBubbleLocalBasis< D,\n-R, dim >, HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >,\n-HierarchicalSimplexP2WithElementBubbleLocalInterpolation<\n-HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > > > Traits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:30\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-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 hierarchicalp2withelementbubble.hh:59\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 Traits::LocalBasisType & localBasis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:39\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 Traits::LocalCoefficientsType & localCoefficients() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:46\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 Traits::LocalInterpolationType & localInterpolation() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:53\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()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:66\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:\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_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-HierarchicalP2WithElementBubbleLocalFiniteElement()\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_\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-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:26\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 finite element needed for the Zou-Kornhuber estimator for Signorini\n-problems.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:414\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:456\n+_\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:286\n+_\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/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: orthonormal.hh File Reference\n+dune-localfunctions: dualq1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,42 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    orthonormal.hh File Reference
    \n+
    dualq1.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 <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 Classes

    class  Dune::OrthonormalLocalFiniteElement< dimDomain, D, R, SF, CF >
     A class providing orthonormal basis functions. More...
    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.9.0\n Loading...\n Searching...\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 _\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+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-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:_\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/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: orthonormal.hh Source File\n+dune-localfunctions: dualq1.hh Source File\n \n \n \n \n \n \n \n@@ -70,71 +70,264 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    orthonormal.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 (C) 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_DUAL_Q1_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_DUAL_Q1_LOCALFINITEELEMENT_HH
    \n
    7
    \n-\n-\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-
    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+
    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-
    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:199
    \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+
    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:29
    \n+
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:25
    \n+
    Definition dualq1localinterpolation.hh:21
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,76 +1,278 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_DUAL_Q1_LOCALFINITEELEMENT_HH\n+6#define DUNE_DUAL_Q1_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/_\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 \n+11#include \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-_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n-_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\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 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:_\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: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\n+Layout map for dual Q1 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.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\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.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/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: dualp1localbasis.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-
    dualp1localbasis.hh File Reference
    \n+
    brezzidouglasmarini2simplex2d.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+\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::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,24 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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:_\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/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: dualp1localbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,147 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualp1localbasis.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 (C) 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_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <numeric>
    \n+
    8#include <dune/geometry/type.hh>
    \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-
    32 template<class D, class R, int dim, bool faceDualT=false>
    \n-
    \n-\n-
    34 {
    \n-
    35 public:
    \n-
    37 static const bool faceDual = faceDualT;
    \n-
    39 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n-
    40 Dune::FieldMatrix<R,1,dim> > Traits;
    \n-
    41
    \n-
    \n-
    43 unsigned int size () const
    \n-
    44 {
    \n-
    45 return dim+1;
    \n-
    46 }
    \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-
    47
    \n+
    48
    \n
    \n-
    49 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    50 std::vector<typename Traits::RangeType>& out) const
    \n-
    51 {
    \n-
    52 // evaluate P1 basis functions
    \n-
    53 std::vector<typename Traits::RangeType> p1Values(size());
    \n-
    54
    \n-
    55 p1Values[0] = 1.0;
    \n-
    56
    \n-
    57 for (int i=0; i<dim; i++) {
    \n-
    58 p1Values[0] -= in[i];
    \n-
    59 p1Values[i+1] = in[i];
    \n-
    60 }
    \n-
    61
    \n-
    62 // compute dual basis function values as a linear combination of the Lagrange values
    \n-
    63 out.resize(size());
    \n-
    64
    \n-
    65 for (int i=0; i<=dim; i++) {
    \n-
    66 out[i] = (dim+!faceDual)*p1Values[i];
    \n-
    67 for (int j=0; j<i; j++)
    \n-
    68 out[i] -= p1Values[j];
    \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-
    70 for (int j=i+1; j<=dim; j++)
    \n-
    71 out[i] -= p1Values[j];
    \n-
    72 }
    \n+
    \n+
    70 static constexpr GeometryType type ()
    \n+
    71 {
    \n+
    72 return GeometryTypes::triangle;
    \n
    73 }
    \n
    \n
    74
    \n-
    76 inline void
    \n-
    \n-\n-
    78 std::vector<typename Traits::JacobianType>& out) const
    \n-
    79 {
    \n-
    80 // evaluate P1 jacobians
    \n-
    81 std::vector<typename Traits::JacobianType> p1Jacs(size());
    \n-
    82
    \n-
    83 for (int i=0; i<dim; i++)
    \n-
    84 p1Jacs[0][0][i] = -1;
    \n-
    85
    \n-
    86 for (int i=0; i<dim; i++)
    \n-
    87 for (int j=0; j<dim; j++)
    \n-
    88 p1Jacs[i+1][0][j] = (i==j);
    \n-
    89
    \n-
    90 // compute dual basis jacobians as linear combination of the Lagrange jacobians
    \n-
    91 out.resize(size());
    \n-
    92
    \n-
    93 for (size_t i=0; i<=dim; i++) {
    \n-
    94 out[i][0] = 0;
    \n-
    95 out[i][0].axpy(dim+!faceDual,p1Jacs[i][0]);
    \n-
    96
    \n-
    97 for (size_t j=0; j<i; j++)
    \n-
    98 out[i][0] -= p1Jacs[j][0];
    \n-
    99
    \n-
    100 for (int j=i+1; j<=dim; j++)
    \n-
    101 out[i][0] -= p1Jacs[j][0];
    \n-
    102 }
    \n-
    103 }
    \n-
    \n-
    104
    \n-
    \n-
    106 void partial (const std::array<unsigned int, dim>& order,
    \n-
    107 const typename Traits::DomainType& in, // position
    \n-
    108 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    109 {
    \n-
    110 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    111 if (totalOrder == 0) {
    \n-
    112 evaluateFunction(in, out);
    \n-
    113 } else {
    \n-
    114 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    115 }
    \n-
    116 }
    \n-
    \n-
    117
    \n-
    \n-
    119 unsigned int order () const
    \n-
    120 {
    \n-
    121 return 1;
    \n-
    122 }
    \n-
    \n-
    123 };
    \n-
    \n-
    124}
    \n-
    125#endif
    \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:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Dual Lagrange shape functions on the simplex.
    Definition dualp1localbasis.hh:34
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualp1localbasis.hh:119
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualp1localbasis.hh:49
    \n-
    static const bool faceDual
    Determines if the basis is only biorthogonal on adjacent faces.
    Definition dualp1localbasis.hh:37
    \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:106
    \n-
    unsigned int size() const
    number of shape functions
    Definition dualp1localbasis.hh:43
    \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:40
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualp1localbasis.hh:77
    \n-\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: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
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,163 +1,143 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALFINITEELEMENT_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/_\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-32 template\n-_\b3_\b3 class _\bD_\bu_\ba_\bl_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-34 {\n-35 public:\n-_\b3_\b7 static const bool _\bf_\ba_\bc_\be_\bD_\bu_\ba_\bl = faceDualT;\n-39 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_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-41\n-_\b4_\b3 unsigned int _\bs_\bi_\bz_\be () const\n-44 {\n-45 return dim+1;\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 // evaluate P1 basis functions\n-53 std::vector p1Values(_\bs_\bi_\bz_\be());\n-54\n-55 p1Values[0] = 1.0;\n-56\n-57 for (int i=0; i\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+_\b6_\b5 unsigned int _\bs_\bi_\bz_\be () const\n+66 {\n+67 return basis.size();\n+68 }\n 69\n-70 for (int j=i+1; j<=dim; j++)\n-71 out[i] -= p1Values[j];\n-72 }\n+_\b7_\b0 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+71 {\n+72 return GeometryTypes::triangle;\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,\n-78 std::vector& out) const\n-79 {\n-80 // evaluate P1 jacobians\n-81 std::vector p1Jacs(_\bs_\bi_\bz_\be());\n-82\n-83 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n-107 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-108 std::vector& out) const // return value\n-109 {\n-110 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-111 if (totalOrder == 0) {\n-112 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-113 } else {\n-114 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-115 }\n-116 }\n-117\n-_\b1_\b1_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-120 {\n-121 return 1;\n-122 }\n-123 };\n-124}\n-125#endif\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_\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+_\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 _\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:34\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:42\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:34\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:119\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:49\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:37\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:106\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+_\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 dualp1localbasis.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_\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:40\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:77\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\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: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 ===============================================================================\n 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: dualp1localinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,32 +65,34 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    dualp1localinterpolation.hh File Reference
    \n+
    brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/localfunctions/common/localinterpolation.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

    class  Dune::DualP1LocalInterpolation< dim, LB >
    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,21 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-dualp1localinterpolation.hh File Reference\n+brezzidouglasmarini2cube2dlocalcoefficients.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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:_\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:_\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/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: dualp1localinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,89 +70,81 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualp1localinterpolation.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 (C) 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_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-\n+
    8#include <cstddef>
    \n+
    9#include <vector>
    \n
    10
    \n-
    11namespace Dune
    \n-
    12{
    \n-
    13 template<int dim, class LB>
    \n-
    \n-\n-
    15 {
    \n-
    16 public:
    \n-
    18 template<typename F, typename C>
    \n-
    \n-
    19 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    20 {
    \n-
    21 typename LB::Traits::DomainType x;
    \n-
    22 // If the dual functions are dual on the faces,
    \n-
    23 // then adjust the interpolation weights
    \n-
    24 const int faceDual(LB::faceDual);
    \n+
    11#include "../../common/localkey.hh"
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    \n+\n+
    24 {
    \n
    25
    \n-
    26 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \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-
    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 };
    \n-
    \n-
    59}
    \n-
    60
    \n-
    61#endif
    \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-
    Definition dualp1localinterpolation.hh:15
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualp1localinterpolation.hh:19
    \n-\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:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,82 +1,80 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALCOEFFICIENTS_HH\n 7\n-8#include \n-9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\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-11namespace _\bD_\bu_\bn_\be\n-12{\n-13 template\n-_\b1_\b4 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-15 {\n-16 public:\n-18 template\n-_\b1_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-20 {\n-21 typename LB::Traits::DomainType x;\n-22 // If the dual functions are dual on the faces,\n-23 // then adjust the interpolation weights\n-24 const int faceDual(LB::faceDual);\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 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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 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:_\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:15\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 &ff, 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:19\n-_\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_\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 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: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/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: dualp1localcoefficients.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-
    dualp1localcoefficients.hh File Reference
    \n+
    brezzidouglasmarini2cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n #include <vector>
    \n-#include <dune/localfunctions/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::DualP1LocalCoefficients< dim >
     Local coefficients for dual simplex P1 elements. 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,23 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-dualp1localcoefficients.hh File Reference\n-#include \n+brezzidouglasmarini2cube2dlocalbasis.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+#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:_\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:_\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/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: dualp1localcoefficients.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,320 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualp1localcoefficients.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 (C) 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_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \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-
    15
    \n-
    21 template <int dim>
    \n-
    \n-\n-
    23 {
    \n-
    24 public:
    \n-
    \n-\n-
    27 {
    \n-
    28 for (std::size_t i=0; i<size(); i++)
    \n-
    29 li[i] = LocalKey(i,dim,0);
    \n-
    30 }
    \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-
    33 std::size_t size () const
    \n-
    34 {
    \n-
    35 return dim+1;
    \n-
    36 }
    \n-
    \n-
    37
    \n-
    \n-
    39 const LocalKey& localKey (std::size_t i) const
    \n-
    40 {
    \n-
    41 return li[i];
    \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-
    44 private:
    \n-
    45 std::vector<LocalKey> li;
    \n-
    46 };
    \n-
    \n-
    47
    \n-
    48}
    \n-
    49
    \n-
    50#endif
    \n-\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+
    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-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:23
    \n-
    DualP1LocalCoefficients()
    Standard constructor.
    Definition dualp1localcoefficients.hh:26
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualp1localcoefficients.hh:39
    \n-
    std::size_t size() const
    number of coefficients
    Definition dualp1localcoefficients.hh:33
    \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:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,76 +1,350 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_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#include \n+10#include \n+11#include \n 12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-21 template \n-_\b2_\b2 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-23 {\n-24 public:\n-_\b2_\b6 _\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-27 {\n-28 for (std::size_t i=0; i<_\bs_\bi_\bz_\be(); i++)\n-29 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,dim,0);\n-30 }\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_\b3 std::size_t _\bs_\bi_\bz_\be () const\n-34 {\n-35 return dim+1;\n-36 }\n-37\n-_\b3_\b9 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-40 {\n-41 return li[i];\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-44 private:\n-45 std::vector li;\n-46 };\n-47\n-48}\n-49\n-50#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\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+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+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_\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:23\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:23\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+_\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 dualp1localcoefficients.hh:26\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:39\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:33\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:34\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: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/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: dualq1.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.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+
    brezzidouglasmarini2cube2dlocalinterpolation.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+\n

    Go to the source code of this file.

    \n \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::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,30 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-dualq1.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n+brezzidouglasmarini2cube2dlocalinterpolation.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/_\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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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:_\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:_\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/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: dualq1.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,264 +70,157 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualq1.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 (C) 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_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <array>
    \n+
    8#include <vector>
    \n
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/fmatrix.hh>
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+\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+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n+
    27
    \n+
    28 public:
    \n+
    \n+\n+
    31 {
    \n+
    32 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    33 }
    \n+
    \n+
    34
    \n+
    \n+\n+
    41 {
    \n+
    42 sign0 = sign1 = sign2 = sign3 = 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
    \n+
    60 n0[0] = -1.0;
    \n+
    61 n0[1] = 0.0;
    \n+
    62 n1[0] = 1.0;
    \n+
    63 n1[1] = 0.0;
    \n+
    64 n2[0] = 0.0;
    \n+
    65 n2[1] = -1.0;
    \n+
    66 n3[0] = 0.0;
    \n+
    67 n3[1] = 1.0;
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    78 template<typename F, typename C>
    \n+
    \n+
    79 void interpolate(const F& ff, std::vector<C>& out) const
    \n+
    80 {
    \n+
    81 // f gives v*outer normal at a point on the edge!
    \n+
    82 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    83 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    84
    \n+
    85 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    86
    \n+
    87 out.resize(14);
    \n+
    88 fill(out.begin(), out.end(), 0.0);
    \n+
    89
    \n+
    90 const int qOrder = 4;
    \n+
    91 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n
    92
    \n-
    93 private:
    \n-
    95 void setupFaceDualCoefficients();
    \n-
    96
    \n-
    98 void setupDualCoefficients();
    \n+
    93 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n+
    94 it != rule.end(); ++it)
    \n+
    95 {
    \n+
    96 Scalar qPos = it->position();
    \n+
    97
    \n+
    98 typename LB::Traits::DomainType localPos;
    \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+
    100 localPos[0] = 0.0;
    \n+
    101 localPos[1] = qPos;
    \n+
    102 auto y = f(localPos);
    \n+
    103 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n+
    104 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    105 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign0;
    \n+
    106
    \n+
    107 localPos[0] = 1.0;
    \n+
    108 localPos[1] = qPos;
    \n+
    109 y = f(localPos);
    \n+
    110 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;
    \n+
    111 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    112 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign1;
    \n+
    113
    \n+
    114 localPos[0] = qPos;
    \n+
    115 localPos[1] = 0.0;
    \n+
    116 y = f(localPos);
    \n+
    117 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n+
    118 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    119 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign2;
    \n+
    120
    \n+
    121 localPos[0] = qPos;
    \n+
    122 localPos[1] = 1.0;
    \n+
    123 y = f(localPos);
    \n+
    124 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n+
    125 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    126 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign3;
    \n+
    127 }
    \n+
    128
    \n+
    129 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    130
    \n+
    131 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n+
    132 {
    \n+
    133 auto y = f(it->position());
    \n+
    134 out[12] += y[0]*it->weight();
    \n+
    135 out[13] += y[1]*it->weight();
    \n+
    136 }
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    139 private:
    \n+
    140 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n+
    141 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n+
    142 };
    \n+
    \n+
    143} // end namespace Dune
    \n+
    144#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-
    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:29
    \n-
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:25
    \n-
    Definition dualq1localinterpolation.hh:21
    \n+
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:26
    \n+
    BDM2Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:40
    \n+
    BDM2Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:30
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:79
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,278 +1,162 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 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 \n-11#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/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+24 template\n+_\b2_\b5 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+26 {\n+27\n+28 public:\n+_\b3_\b0 _\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+31 {\n+32 sign0 = sign1 = sign2 = sign3 = 1.0;\n+33 }\n+34\n+_\b4_\b0 _\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+41 {\n+42 sign0 = sign1 = sign2 = sign3 = 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 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+53 sign2 = -1.0;\n+54 }\n+55 if (s & 8)\n+56 {\n+57 sign3 = -1.0;\n+58 }\n+59\n+60 n0[0] = -1.0;\n+61 n0[1] = 0.0;\n+62 n1[0] = 1.0;\n+63 n1[1] = 0.0;\n+64 n2[0] = 0.0;\n+65 n2[1] = -1.0;\n+66 n3[0] = 0.0;\n+67 n3[1] = 1.0;\n+68 }\n+69\n+78 template\n+_\b7_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& ff, std::vector& out) const\n+80 {\n+81 // f gives v*outer normal at a point on the edge!\n+82 typedef typename LB::Traits::RangeFieldType Scalar;\n+83 typedef typename LB::Traits::DomainFieldType Vector;\n+84\n+85 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+86\n+87 out.resize(14);\n+88 fill(out.begin(), out.end(), 0.0);\n+89\n+90 const int qOrder = 4;\n+91 const QuadratureRule& rule = QuadratureRules::rule\n+(GeometryTypes::cube(1), qOrder);\n 92\n-93 private:\n-95 void setupFaceDualCoefficients();\n-96\n-98 void setupDualCoefficients();\n+93 for (typename QuadratureRule::const_iterator it = rule.begin();\n+94 it != rule.end(); ++it)\n+95 {\n+96 Scalar qPos = it->position();\n+97\n+98 typename LB::Traits::DomainType localPos;\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; kweight()*sign0;\n+104 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n+105 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign0;\n+106\n+107 localPos[0] = 1.0;\n+108 localPos[1] = qPos;\n+109 y = f(localPos);\n+110 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;\n+111 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n+112 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign1;\n+113\n+114 localPos[0] = qPos;\n+115 localPos[1] = 0.0;\n+116 y = f(localPos);\n+117 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n+118 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n+119 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign2;\n+120\n+121 localPos[0] = qPos;\n+122 localPos[1] = 1.0;\n+123 y = f(localPos);\n+124 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n+125 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n+126 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n+>weight()*sign3;\n+127 }\n+128\n+129 const QuadratureRule& rule2 = QuadratureRules::rule\n+(GeometryTypes::cube(2), qOrder);\n+130\n+131 for (typename QuadratureRule::const_iterator it=rule2.begin();\n+it!=rule2.end(); ++it)\n+132 {\n+133 auto y = f(it->position());\n+134 out[12] += y[0]*it->weight();\n+135 out[13] += y[1]*it->weight();\n+136 }\n+137 }\n+138\n+139 private:\n+140 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n+141 typename LB::Traits::DomainType n0, n1, n2, n3;\n+142 };\n+143} // end namespace Dune\n+144#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:_\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: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\n-Layout map for dual Q1 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localcoefficients.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\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localinterpolation.hh:21\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:26\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:40\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:30\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 &ff, 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:79\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/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: dualp1.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1simplex2d.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-
    dualp1.hh File Reference
    \n+
    brezzidouglasmarini1simplex2d.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::DualP1LocalFiniteElement< D, R, dim, faceDual >
     The local dual p1 finite element on simplices. 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,24 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-dualp1.hh File Reference\n+brezzidouglasmarini1simplex2d.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_\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 \"_\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:_\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:_\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/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: dualp1.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,118 +70,124 @@\n
    \n \n \n \n \n \n \n
    \n-
    dualp1.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 (C) 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_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-\n-\n-\n-\n+
    10#include "../common/localfiniteelementtraits.hh"
    \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-
    90
    \n-
    91#endif
    \n-\n-\n-\n-\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::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 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: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 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:34
    \n-
    Local coefficients for dual simplex P1 elements.
    Definition dualp1localcoefficients.hh:23
    \n-
    Definition dualp1localinterpolation.hh:15
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,130 +1,144 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALFINITEELEMENT_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_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_\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+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-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+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+_\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-85 };\n-86\n-87\n-88\n-89}\n-90\n-91#endif\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-_\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-_\bl_\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+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_\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+_\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 _\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+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: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:_\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:34\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:23\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:15\n ===============================================================================\n 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: dualq1localbasis.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2cube2d.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-
    dualq1localbasis.hh File Reference
    \n+
    brezzidouglasmarini2cube2d.hh File Reference
    \n
    \n
    \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 \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::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,25 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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:_\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/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: dualq1localbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini2cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,171 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualq1localbasis.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 (C) 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_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9#include <numeric>
    \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-
    27 template<class D, class R, int dim>
    \n-
    \n-\n-
    29 {
    \n-
    30 public:
    \n-
    31 typedef LocalBasisTraits<D,dim,Dune::FieldVector<D,dim>,R,1,Dune::FieldVector<R,1>,
    \n-
    32 Dune::FieldMatrix<R,1,dim> > Traits;
    \n-
    33
    \n-
    \n-
    34 void setCoefficients(const std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)>& coefficients)
    \n-
    35 {
    \n-
    36 coefficients_ = coefficients;
    \n-
    37 }
    \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-
    40 unsigned int size () const
    \n-
    41 {
    \n-
    42 return 1<<dim;
    \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 // compute q1 values
    \n-
    50 std::vector<typename Traits::RangeType> q1Values(size());
    \n-
    51
    \n-
    52 for (size_t i=0; i<size(); i++) {
    \n-
    53
    \n-
    54 q1Values[i] = 1;
    \n-
    55
    \n-
    56 for (int j=0; j<dim; j++)
    \n-
    57 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n-
    58 q1Values[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n-
    59
    \n-
    60 }
    \n-
    61
    \n-
    62 // compute the dual values by using that they are linear combinations of q1 functions
    \n-
    63 out.resize(size());
    \n-
    64 for (size_t i=0; i<size(); i++)
    \n-
    65 out[i] = 0;
    \n-
    66
    \n-
    67 for (size_t i=0; i<size(); i++)
    \n-
    68 for (size_t j=0; j<size(); j++)
    \n-
    69 out[i] += coefficients_[i][j]*q1Values[j];
    \n-
    70
    \n-
    71
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    75 inline void
    \n-
    \n-
    76 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    77 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    78 {
    \n-
    79 // compute q1 jacobians
    \n-
    80 std::vector<typename Traits::JacobianType> q1Jacs(size());
    \n-
    81
    \n-
    82 // Loop over all shape functions
    \n-
    83 for (size_t i=0; i<size(); i++) {
    \n-
    84
    \n-
    85 // Loop over all coordinate directions
    \n-
    86 for (int j=0; j<dim; j++) {
    \n-
    87
    \n-
    88 // Initialize: the overall expression is a product
    \n-
    89 // if j-th bit of i is set to -1, else 1
    \n-
    90 q1Jacs[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n-
    91
    \n-
    92 for (int k=0; k<dim; k++) {
    \n-
    93
    \n-
    94 if (j!=k)
    \n-
    95 // if k-th bit of i is set multiply with in[j], else with 1-in[j]
    \n-
    96 q1Jacs[i][0][j] *= (i & (1<<k)) ? in[k] : 1-in[k];
    \n-
    97
    \n-
    98 }
    \n-
    99
    \n-
    100 }
    \n-
    101
    \n-
    102 }
    \n-
    103
    \n-
    104 // compute the dual jacobians by using that they are linear combinations of q1 functions
    \n-
    105 out.resize(size());
    \n-
    106 for (size_t i=0; i<size(); i++)
    \n-
    107 out[i] = 0;
    \n-
    108
    \n-
    109 for (size_t i=0; i<size(); i++)
    \n-
    110 for (size_t j=0; j<size(); j++)
    \n-
    111 out[i].axpy(coefficients_[i][j],q1Jacs[j]);
    \n-
    112
    \n-
    113 }
    \n-
    \n-
    114
    \n-
    \n-
    116 void partial (const std::array<unsigned int, dim>& order,
    \n-
    117 const typename Traits::DomainType& in, // position
    \n-
    118 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    119 {
    \n-
    120 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    121 if (totalOrder == 0) {
    \n-
    122 evaluateFunction(in, out);
    \n-
    123 } else {
    \n-
    124 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    125 }
    \n-
    126 }
    \n-
    \n-
    127
    \n-
    \n-
    129 unsigned int order () const
    \n-
    130 {
    \n-
    131 return 1;
    \n-
    132 }
    \n-
    \n-
    133
    \n-
    134 private:
    \n-
    135 std::array<Dune::FieldVector<R, (1<<dim)> ,(1<<dim)> coefficients_;
    \n-
    136 };
    \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-
    137}
    \n-
    138#endif
    \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
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Dual Lagrange shape functions of order 1 on the reference cube.
    Definition dualq1localbasis.hh:29
    \n-
    unsigned int size() const
    number of shape functions
    Definition dualq1localbasis.hh:40
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition dualq1localbasis.hh:129
    \n-
    void setCoefficients(const std::array< Dune::FieldVector< R,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localbasis.hh:34
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition dualq1localbasis.hh:46
    \n-
    LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
    Definition dualq1localbasis.hh:32
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition dualq1localbasis.hh:76
    \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:116
    \n-\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: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
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,185 +1,139 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BREZZIDOUGLASMARINI2_QUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_QUBE2D_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/_\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-27 template\n-_\b2_\b8 class _\bD_\bu_\ba_\bl_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\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,_\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_\b2 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-33\n-_\b3_\b4 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,\n-(1<& coefficients)\n-35 {\n-36 coefficients_ = coefficients;\n-37 }\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+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_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-41 {\n-42 return 1<& out) const\n-48 {\n-49 // compute q1 values\n-50 std::vector q1Values(_\bs_\bi_\bz_\be());\n-51\n-52 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\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-54 q1Values[i] = 1;\n-55\n-56 for (int j=0; j& out) const // return value\n-78 {\n-79 // compute q1 jacobians\n-80 std::vector q1Jacs(_\bs_\bi_\bz_\be());\n-81\n-82 // Loop over all shape functions\n-83 for (size_t i=0; i<_\bs_\bi_\bz_\be(); i++) {\n-84\n-85 // Loop over all coordinate directions\n-86 for (int j=0; j& _\bo_\br_\bd_\be_\br,\n-117 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-118 std::vector& out) const // return value\n-119 {\n-120 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-121 if (totalOrder == 0) {\n-122 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-123 } else {\n-124 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-125 }\n-126 }\n-127\n-_\b1_\b2_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-130 {\n-131 return 1;\n-132 }\n-133\n-134 private:\n-135 std::array ,(1< coefficients_;\n-136 };\n-137}\n-138#endif\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_\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:_\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:34\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:42\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:29\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+_\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\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn dualq1localbasis.hh:40\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:129\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:34\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:46\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:32\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:76\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:116\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\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: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 ===============================================================================\n 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: dualq1localcoefficients.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-
    dualq1localcoefficients.hh File Reference
    \n+
    brezzidouglasmarini1cube2d.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::DualQ1LocalCoefficients< dim >
     Layout map for dual Q1 elements. 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,24 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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:_\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/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: dualq1localcoefficients.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,79 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualq1localcoefficients.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 (C) 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_BREZZIDOUGLASMARINI1_QUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE2D_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-
    23 template <int dim>
    \n-
    \n-\n-
    25 {
    \n-
    26 public:
    \n-
    \n-\n-
    29 {
    \n-
    30 for (std::size_t i=0; i<(1<<dim); i++)
    \n-
    31 li[i] = LocalKey(i,dim,0);
    \n-
    32 }
    \n-
    \n-
    33
    \n-
    \n-
    35 std::size_t size () const
    \n-
    36 {
    \n-
    37 return 1<<dim;
    \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+
    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 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-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Layout map for dual Q1 elements.
    Definition dualq1localcoefficients.hh:25
    \n-
    std::size_t size() const
    number of coefficients
    Definition dualq1localcoefficients.hh:35
    \n-
    DualQ1LocalCoefficients()
    Standard constructor.
    Definition dualq1localcoefficients.hh:28
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition dualq1localcoefficients.hh:41
    \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: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
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,77 +1,141 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 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#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-23 template \n-_\b2_\b4 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-25 {\n-26 public:\n-_\b2_\b8 _\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-48 };\n-49\n-50}\n-51\n-52#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\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+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_\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_\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 _\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:23\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:25\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:35\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+_\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 dualq1localcoefficients.hh:28\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:41\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: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 ===============================================================================\n 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: dualq1localinterpolation.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3d.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-
    dualq1localinterpolation.hh File Reference
    \n+
    brezzidouglasmarini1cube3d.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <vector>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::DualQ1LocalInterpolation< dim, LB >
    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.9.0\n Loading...\n Searching...\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+ * _\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-dualq1localinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 _\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:_\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/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: dualq1localinterpolation.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube3d.hh Source File\n \n \n \n \n \n \n \n@@ -70,110 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualq1localinterpolation.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 (C) 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_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_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-\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-
    19 template<int dim, class LB>
    \n-
    \n-\n-
    21 {
    \n-
    22 public:
    \n-
    23
    \n-
    \n-
    24 void setCoefficients(const std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)>& coefficients)
    \n-
    25 {
    \n-
    26 coefficients_ = coefficients;
    \n-
    27 }
    \n-
    \n+
    25 template<class D, class R>
    \n+
    \n+\n+
    27 {
    \n
    28
    \n-
    29
    \n-
    31 template<typename F, typename C>
    \n-
    \n-
    32 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    33 {
    \n-
    34 typename LB::Traits::DomainType x;
    \n-
    35
    \n-
    36 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n-
    37
    \n-
    38 const int size = 1<<dim;
    \n-
    39
    \n-
    40 // compute Q1 interpolation coefficients
    \n-
    41 Dune::FieldVector<C,size> q1Coefficients;
    \n-
    42
    \n-
    43 for (int i=0; i< (1<<dim); i++) {
    \n-
    44
    \n-
    45 // Generate coordinate of the i-th corner of the reference cube
    \n-
    46 // We could use the ReferenceElement for this as well, but it is
    \n-
    47 // still not clear how dune-localfunctions should have access to them.
    \n-
    48 for (int j=0; j<dim; j++)
    \n-
    49 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n-
    50
    \n-
    51 q1Coefficients[i] = f(x);
    \n-
    52
    \n-
    53 }
    \n-
    54
    \n-
    55 out.resize(size);
    \n-
    56
    \n-
    57 // solve a linear system to compute the dual coefficients
    \n-
    58 Dune::FieldMatrix<C,size,size> mat;
    \n-
    59
    \n-
    60 for (int i=0; i<size; i++)
    \n-
    61 for (int j=0; j<size; j++)
    \n-
    62 mat[i][j] = coefficients_[j][i];
    \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 // now solve for the weights
    \n-
    65 Dune::FieldVector<C,size> sol(0);
    \n-
    66
    \n-
    67 mat.solve(sol,q1Coefficients);
    \n-
    68
    \n-
    69 // write result in out vector
    \n-
    70 for (int i=0; i<size; i++)
    \n-
    71 out[i] = sol[i];
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    74 private:
    \n-
    75 std::array<Dune::FieldVector<typename LB::Traits::RangeFieldType, (1<<dim)> ,(1<<dim)> coefficients_;
    \n-
    76 };
    \n-
    \n-
    77
    \n-
    78}
    \n-
    79
    \n-
    80#endif
    \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-
    Definition dualq1localinterpolation.hh:21
    \n-
    void setCoefficients(const std::array< Dune::FieldVector< typename LB::Traits::RangeFieldType,(1<< dim)>,(1<< dim)> &coefficients)
    Definition dualq1localinterpolation.hh:24
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Local interpolation of a function.
    Definition dualq1localinterpolation.hh:32
    \n-\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
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,106 +1,139 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_QUBE3D_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \n-12#include \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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 14\n 15namespace _\bD_\bu_\bn_\be\n 16{\n-17\n-19 template\n-_\b2_\b0 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-21 {\n-22 public:\n-23\n-_\b2_\b4 void _\bs_\be_\bt_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs(const std::array ,(1<& coefficients)\n-25 {\n-26 coefficients_ = coefficients;\n-27 }\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\n-31 template\n-_\b3_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-33 {\n-34 typename LB::Traits::DomainType x;\n-35\n-36 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-37\n-38 const int size = 1< q1Coefficients;\n-42\n-43 for (int i=0; i< (1< mat;\n-59\n-60 for (int i=0; i,\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-64 // now solve for the weights\n-65 Dune::FieldVector sol(0);\n-66\n-67 mat.solve(sol,q1Coefficients);\n-68\n-69 // write result in out vector\n-70 for (int i=0; i\n-,(1< coefficients_;\n-76 };\n-77\n-78}\n-79\n-80#endif\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 _\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:21\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:24\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 &ff, 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:32\n-_\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_\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 ===============================================================================\n 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: dualpq1factory.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.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-
    dualpq1factory.hh File Reference
    \n+
    brezzidouglasmarini1cube2dlocalinterpolation.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+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \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::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,22 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+brezzidouglasmarini1cube2dlocalinterpolation.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_\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_\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:_\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/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: dualpq1factory.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,118 +70,143 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    dualpq1factory.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 (C) 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_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <map>
    \n+
    8#include <vector>
    \n
    9
    \n-\n-\n+
    10#include <dune/geometry/quadraturerules.hh>
    \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+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n+
    27
    \n+
    28 public:
    \n+
    \n+\n+
    31 {
    \n+
    32 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    33 }
    \n
    \n-
    38
    \n+
    34
    \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+\n+
    41 {
    \n+
    42 sign0 = sign1 = sign2 = sign3 = 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
    \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+
    60 n0[0] = -1.0;
    \n+
    61 n0[1] = 0.0;
    \n+
    62 n1[0] = 1.0;
    \n+
    63 n1[1] = 0.0;
    \n+
    64 n2[0] = 0.0;
    \n+
    65 n2[1] = -1.0;
    \n+
    66 n3[0] = 0.0;
    \n+
    67 n3[1] = 1.0;
    \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+
    78 template<typename F, typename C>
    \n+
    \n+
    79 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    80 {
    \n+
    81 // f gives v*outer normal at a point on the edge!
    \n+
    82 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    83 //typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    84
    \n+
    85 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    86
    \n+
    87 out.resize(8);
    \n+
    88 fill(out.begin(), out.end(), 0.0);
    \n+
    89
    \n+
    90 const int qOrder = 4;
    \n+
    91 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    92
    \n+
    93 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n+
    94 it != rule.end(); ++it)
    \n+
    95 {
    \n+
    96 Scalar qPos = it->position();
    \n+
    97 typename LB::Traits::DomainType localPos;
    \n+
    98
    \n+
    99 localPos[0] = 0.0;
    \n+
    100 localPos[1] = qPos;
    \n+
    101 auto y = f(localPos);
    \n+
    102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n+
    103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    104
    \n+
    105 localPos[0] = 1.0;
    \n+
    106 localPos[1] = qPos;
    \n+
    107 y = f(localPos);
    \n+
    108 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n+
    109 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    110
    \n+
    111 localPos[0] = qPos;
    \n+
    112 localPos[1] = 0.0;
    \n+
    113 y = f(localPos);
    \n+
    114 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n+
    115 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    116
    \n+
    117 localPos[0] = qPos;
    \n+
    118 localPos[1] = 1.0;
    \n+
    119 y = f(localPos);
    \n+
    120 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n+
    121 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    122 }
    \n+
    123 }
    \n+
    \n+
    124
    \n+
    125 private:
    \n+
    126 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n+
    127 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n+
    128 };
    \n+
    \n+
    129}
    \n+
    130#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \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:286
    \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+
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:26
    \n+
    BDM1Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:40
    \n+
    BDM1Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:30
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:79
    \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,143 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_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/_\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+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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+24 template\n+_\b2_\b5 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+26 {\n+27\n+28 public:\n+_\b3_\b0 _\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+31 {\n+32 sign0 = sign1 = sign2 = sign3 = 1.0;\n+33 }\n+34\n+_\b4_\b0 _\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 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+42 sign0 = sign1 = sign2 = sign3 = 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\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+60 n0[0] = -1.0;\n+61 n0[1] = 0.0;\n+62 n1[0] = 1.0;\n+63 n1[1] = 0.0;\n+64 n2[0] = 0.0;\n+65 n2[1] = -1.0;\n+66 n3[0] = 0.0;\n+67 n3[1] = 1.0;\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+78 template\n+_\b7_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+80 {\n+81 // f gives v*outer normal at a point on the edge!\n+82 typedef typename LB::Traits::RangeFieldType Scalar;\n+83 //typedef typename LB::Traits::DomainFieldType Vector;\n+84\n+85 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+86\n+87 out.resize(8);\n+88 fill(out.begin(), out.end(), 0.0);\n+89\n+90 const int qOrder = 4;\n+91 const QuadratureRule& rule = QuadratureRules::rule\n+(GeometryTypes::cube(1), qOrder);\n+92\n+93 for (typename QuadratureRule::const_iterator it = rule.begin();\n+94 it != rule.end(); ++it)\n+95 {\n+96 Scalar qPos = it->position();\n+97 typename LB::Traits::DomainType localPos;\n+98\n+99 localPos[0] = 0.0;\n+100 localPos[1] = qPos;\n+101 auto y = f(localPos);\n+102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n+103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n+104\n+105 localPos[0] = 1.0;\n+106 localPos[1] = qPos;\n+107 y = f(localPos);\n+108 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n+109 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n+110\n+111 localPos[0] = qPos;\n+112 localPos[1] = 0.0;\n+113 y = f(localPos);\n+114 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n+115 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n+116\n+117 localPos[0] = qPos;\n+118 localPos[1] = 1.0;\n+119 y = f(localPos);\n+120 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n+121 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n+122 }\n+123 }\n+124\n+125 private:\n+126 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n+127 typename LB::Traits::DomainType n0, n1, n2, n3;\n+128 };\n+129}\n+130#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:_\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:286\n-_\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:_\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:26\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:40\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:30\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 &ff, 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:79\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/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: hierarchical.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,31 +65,41 @@\n
    \n \n \n \n \n \n \n
    \n-
    hierarchical.hh File Reference
    \n+ \n+
    brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-\n-

    Convenience header that includes all available hierarchical LocalFiniteElements. \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 <cstddef>
    \n+#include <vector>
    \n+#include "../../common/localkey.hh"
    \n
    \n

    Go to the source code of this file.

    \n-

    Detailed Description

    \n-

    Convenience header that includes all available hierarchical LocalFiniteElements.

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

    \n+Classes

    class  Dune::BDM1Cube2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. 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,18 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+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 _\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 hierarchical\n-LocalFiniteElements.\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+\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: hierarchical.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,31 +70,78 @@\n \n \n \n \n \n \n \n
    \n-
    hierarchical.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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_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+
    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+
    52}
    \n+
    53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH
    \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:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,77 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_\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_\bw_\bi_\bt_\bh_\be_\bl_\be_\bm_\be_\bn_\bt_\bb_\bu_\bb_\bb_\bl_\be_\b._\bh_\bh\n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_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_\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:_\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: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/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: mimeticall.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    mimeticall.hh File Reference
    \n+
    brezzidouglasmarini1cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/common/fvector.hh>
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n+#include <vector>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/geometry/type.hh>
    \n-#include "../common/localbasis.hh"
    \n-#include "../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+\n+\n \n

    \n Classes

    class  Dune::MimeticLocalBasis< D, R, dim >
     
    class  Dune::MimeticLocalInterpolation< LB >
     
    class  Dune::MimeticLocalCoefficients
     ! 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,30 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-mimeticall.hh File Reference\n-#include \n-#include \n-#include \n+brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n+#include \n+#include \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 \"_\b._\b._\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:_\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+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/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: mimeticall.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,173 +70,241 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    mimeticall.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 (C) 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_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_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+
    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-
    \n-\n-
    33 : variant(0)
    \n-
    34 {}
    \n-
    \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-
    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+
    \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 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+
    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#endif
    \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+
    221}
    \n+
    222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \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:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:36
    \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,193 +1,255 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_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\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+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_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\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+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_\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-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+_\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+_\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 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+_\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#endif\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_\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:34\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:42\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:23\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: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\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+_\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 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+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 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+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 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+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 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+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:34\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: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/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: localkey.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-
    localkey.hh File Reference
    \n+
    brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <cstddef>
    \n-#include <ostream>
    \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::LocalKey
     Describe position of one degree of freedom. 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,22 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-localkey.hh File Reference\n-#include \n+brezzidouglasmarini2simplex2dlocalcoefficients.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:_\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:_\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/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: localkey.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,122 +70,84 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    localkey.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 (C) 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_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_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-
    23 {
    \n-
    24 public:
    \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-
    27 enum {
    \n-\n-
    37 };
    \n-
    38
    \n-
    \n-\n-
    41 {}
    \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-
    48 LocalKey (unsigned int s, unsigned int c, unsigned int i)
    \n-
    49 {
    \n-
    50 values_[0] = s;
    \n-
    51 values_[1] = c;
    \n-
    52 values_[2] = i;
    \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-
    \n-
    56 inline unsigned int subEntity () const
    \n-
    57 {
    \n-
    58 return values_[0];
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-
    62 inline unsigned int codim () const
    \n-
    63 {
    \n-
    64 return values_[1];
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    \n-
    68 inline unsigned int index () const
    \n-
    69 {
    \n-
    70 return values_[2];
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    74 void index (unsigned int i)
    \n-
    75 {
    \n-
    76 values_[2] = i;
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    \n-
    80 bool operator< (const LocalKey& other) const
    \n-
    81 {
    \n-
    82 return values_ < other.values_;
    \n-
    83 }
    \n-
    \n-
    84
    \n-
    \n-
    86 friend std::ostream& operator<< (std::ostream& s, const LocalKey& localKey)
    \n-
    87 {
    \n-
    88 return s << "[ subEntity: " << localKey.subEntity()
    \n-
    89 << ", codim: " << localKey.codim()
    \n-
    90 << ", index: " << localKey.index() << " ]";
    \n-
    91 }
    \n-
    \n-
    92
    \n-
    93 private:
    \n-
    94
    \n-
    95 // We use an array to store the values in order to be able to use the array::operator< implementation
    \n-
    96 std::array<unsigned int,3> values_;
    \n-
    97
    \n-
    98 };
    \n-
    \n-
    99
    \n-
    100}
    \n-
    101#endif
    \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
    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:23
    \n-
    LocalKey()
    Standard constructor for uninitialized local index.
    Definition localkey.hh:40
    \n-
    unsigned int index() const
    Return offset within subentity.
    Definition localkey.hh:68
    \n-
    unsigned int codim() const
    Return codim of associated entity.
    Definition localkey.hh:62
    \n-
    unsigned int subEntity() const
    Return number of associated subentity.
    Definition localkey.hh:56
    \n-
    LocalKey(unsigned int s, unsigned int c, unsigned int i)
    Initialize all components.
    Definition localkey.hh:48
    \n-
    bool operator<(const LocalKey &other) const
    Less-than operator so we can use this class as a key type in stl containers.
    Definition localkey.hh:80
    \n-
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:36
    \n-
    void index(unsigned int i)
    Set index component.
    Definition localkey.hh:74
    \n-
    friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey)
    Write LocalKey object to output stream.
    Definition localkey.hh:86
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,127 +1,85 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\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#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-_\b2_\b2 class _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-23 {\n-24 public:\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-27 enum {\n-36 _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm=666\n-_\b3_\b7 };\n-38\n-_\b4_\b0 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by ()\n-41 {}\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_\b8 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by (unsigned int s, unsigned int c, unsigned int i)\n-49 {\n-50 values_[0] = s;\n-51 values_[1] = c;\n-52 values_[2] = i;\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-_\b5_\b6 inline unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by () const\n-57 {\n-58 return values_[0];\n-59 }\n-60\n-_\b6_\b2 inline unsigned int _\bc_\bo_\bd_\bi_\bm () const\n-63 {\n-64 return values_[1];\n-65 }\n-66\n-_\b6_\b8 inline unsigned int _\bi_\bn_\bd_\be_\bx () const\n-69 {\n-70 return values_[2];\n-71 }\n-72\n-_\b7_\b4 void _\bi_\bn_\bd_\be_\bx (unsigned int i)\n-75 {\n-76 values_[2] = i;\n-77 }\n-78\n-_\b8_\b0 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b (const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& other) const\n-81 {\n-82 return values_ < other.values_;\n-83 }\n-84\n-_\b8_\b6 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-87 {\n-88 return s << \"[ subEntity: \" << localKey._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by()\n-89 << \", codim: \" << localKey._\bc_\bo_\bd_\bi_\bm()\n-90 << \", index: \" << localKey._\bi_\bn_\bd_\be_\bx() << \" ]\";\n-91 }\n-92\n-93 private:\n-94\n-95 // We use an array to store the values in order to be able to use the\n-array::operator< implementation\n-96 std::array values_;\n-97\n-98 };\n-99\n-100}\n-101#endif\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:_\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:23\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-LocalKey()\n-Standard constructor for uninitialized local index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:40\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-unsigned int index() const\n-Return offset within subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n-unsigned int codim() const\n-Return codim of associated entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:62\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-unsigned int subEntity() const\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_\bK_\be_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n-LocalKey(unsigned int s, unsigned int c, unsigned int i)\n-Initialize all components.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:48\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\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:80\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:36\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-void index(unsigned int i)\n-Set index component.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:74\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:86\n ===============================================================================\n 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: interface.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,34 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    interface.hh File Reference
    \n+
    brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <cstddef>
    \n-#include <vector>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.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::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...
    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,42 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-interface.hh File Reference\n-#include \n-#include \n+brezzidouglasmarini2simplex2dlocalinterpolation.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 \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_\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:_\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+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/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: interface.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,159 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    interface.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 (C) 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+
    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+\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+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    24 template<class LB>
    \n
    \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+
    27
    \n+
    28 public:
    \n+
    \n+\n+
    31 {
    \n+
    32 sign0 = sign1 = sign2 = 1.0;
    \n+
    33 }
    \n+
    \n+
    34
    \n+
    \n+\n+
    41 {
    \n+
    42 sign0 = sign1 = sign2 = 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
    \n+
    56 m0[0] = 0.5;
    \n+
    57 m0[1] = 0.0;
    \n+
    58 m1[0] = 0.0;
    \n+
    59 m1[1] = 0.5;
    \n+
    60 m2[0] = 0.5;
    \n+
    61 m2[1] = 0.5;
    \n+
    62 n0[0] = 0.0;
    \n+
    63 n0[1] = -1.0;
    \n+
    64 n1[0] = -1.0;
    \n+
    65 n1[1] = 0.0;
    \n+
    66 n2[0] = 1.0/sqrt(2.0);
    \n+
    67 n2[1] = 1.0/sqrt(2.0);
    \n+
    68 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n+
    69 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n+
    70 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n+
    71 }
    \n
    \n+
    72
    \n+
    81 template<typename F, typename C>
    \n+
    \n+
    82 void interpolate(const F& ff, std::vector<C>& out) const
    \n+
    83 {
    \n+
    84 // f gives v*outer normal at a point on the edge!
    \n+
    85 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    86 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    87
    \n+
    88 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    89
    \n+
    90 out.resize(12);
    \n+
    91 fill(out.begin(), out.end(), 0.0);
    \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+
    93 const int qOrder = 4;
    \n+
    94 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n+
    95
    \n+
    96 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n+
    97 {
    \n+
    98 Scalar qPos = it->position();
    \n+
    99
    \n+
    100 typename LB::Traits::DomainType localPos;
    \n+
    101
    \n+
    102 localPos[0] = qPos;
    \n+
    103 localPos[1] = 0.0;
    \n+
    104 auto y = f(localPos);
    \n+
    105 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n+
    106 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;
    \n+
    107 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0/c0;
    \n+
    108
    \n+
    109 localPos[0] = 0.0;
    \n+
    110 localPos[1] = qPos;
    \n+
    111 y = f(localPos);
    \n+
    112 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;
    \n+
    113 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;
    \n+
    114 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1/c1;
    \n+
    115
    \n+
    116 localPos[0] = 1.0 - qPos;
    \n+
    117 localPos[1] = qPos;
    \n+
    118 y = f(localPos);
    \n+
    119 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n+
    120 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;
    \n+
    121 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2/c2;
    \n+
    122 }
    \n+
    123
    \n+
    124 // a volume part is needed here for dofs: 9 10 11
    \n+
    125 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::simplex(2), qOrder);
    \n+
    126
    \n+
    127 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n+
    128 {
    \n+
    129 typename LB::Traits::DomainType localPos = it->position();
    \n+
    130 auto y = f(localPos);
    \n+
    131
    \n+
    132 out[9] += y[0]*it->weight();
    \n+
    133 out[10] += y[1]*it->weight();
    \n+
    134 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos[0]*localPos[0])
    \n+
    135 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos[1]))*it->weight();
    \n+
    136 }
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    139 private:
    \n+
    140 typename LB::Traits::RangeFieldType sign0, sign1, sign2;
    \n+
    141 typename LB::Traits::DomainType m0, m1, m2;
    \n+
    142 typename LB::Traits::DomainType n0, n1, n2;
    \n+
    143 typename LB::Traits::RangeFieldType c0, c1, c2;
    \n+
    144 };
    \n+
    \n+
    145} // end namespace Dune
    \n+
    146#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \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:23
    \n+
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:26
    \n+
    BDM2Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:30
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:82
    \n+
    BDM2Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:40
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,290 +1,168 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+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#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+24 template\n+_\b2_\b5 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 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+27\n+28 public:\n+_\b3_\b0 _\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+31 {\n+32 sign0 = sign1 = sign2 = 1.0;\n+33 }\n+34\n+_\b4_\b0 _\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+41 {\n+42 sign0 = sign1 = sign2 = 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\n+56 m0[0] = 0.5;\n+57 m0[1] = 0.0;\n+58 m1[0] = 0.0;\n+59 m1[1] = 0.5;\n+60 m2[0] = 0.5;\n+61 m2[1] = 0.5;\n+62 n0[0] = 0.0;\n+63 n0[1] = -1.0;\n+64 n1[0] = -1.0;\n+65 n1[1] = 0.0;\n+66 n2[0] = 1.0/sqrt(2.0);\n+67 n2[1] = 1.0/sqrt(2.0);\n+68 c0 = 0.5*n0[0] - 1.0*n0[1];\n+69 c1 = -1.0*n1[0] + 0.5*n1[1];\n+70 c2 = 0.5*n2[0] + 0.5*n2[1];\n+71 }\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+81 template\n+_\b8_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& ff, std::vector& out) const\n+83 {\n+84 // f gives v*outer normal at a point on the edge!\n+85 typedef typename LB::Traits::RangeFieldType Scalar;\n+86 typedef typename LB::Traits::DomainFieldType Vector;\n+87\n+88 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+89\n+90 out.resize(12);\n+91 fill(out.begin(), out.end(), 0.0);\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+93 const int qOrder = 4;\n+94 const Dune::QuadratureRule& rule = Dune::\n+QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n+95\n+96 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n+(); it!=rule.end(); ++it)\n+97 {\n+98 Scalar qPos = it->position();\n+99\n+100 typename LB::Traits::DomainType localPos;\n+101\n+102 localPos[0] = qPos;\n+103 localPos[1] = 0.0;\n+104 auto y = f(localPos);\n+105 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n+106 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;\n+107 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+108\n+109 localPos[0] = 0.0;\n+110 localPos[1] = qPos;\n+111 y = f(localPos);\n+112 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;\n+113 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;\n+114 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+115\n+116 localPos[0] = 1.0 - qPos;\n+117 localPos[1] = qPos;\n+118 y = f(localPos);\n+119 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n+120 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;\n+121 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+122 }\n+123\n+124 // a volume part is needed here for dofs: 9 10 11\n+125 const QuadratureRule& rule2 = QuadratureRules::rule\n+(GeometryTypes::simplex(2), qOrder);\n+126\n+127 for (typename QuadratureRule::const_iterator it=rule2.begin();\n+it!=rule2.end(); ++it)\n+128 {\n+129 typename LB::Traits::DomainType localPos = it->position();\n+130 auto y = f(localPos);\n+131\n+132 out[9] += y[0]*it->weight();\n+133 out[10] += y[1]*it->weight();\n+134 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos\n+[0]*localPos[0])\n+135 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos\n+[1]))*it->weight();\n+136 }\n+137 }\n+138\n+139 private:\n+140 typename LB::Traits::RangeFieldType sign0, sign1, sign2;\n+141 typename LB::Traits::DomainType m0, m1, m2;\n+142 typename LB::Traits::DomainType n0, n1, n2;\n+143 typename LB::Traits::RangeFieldType c0, c1, c2;\n+144 };\n+145} // end namespace Dune\n+146#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:_\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:23\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:26\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: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_\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 &ff, 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:82\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:40\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/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: virtualinterface.hh File Reference\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,57 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    virtualinterface.hh File Reference
    \n+
    brezzidouglasmarini2simplex2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <type_traits>
    \n-#include <array>
    \n+
    #include <array>
    \n+#include <bitset>
    \n+#include <numeric>
    \n #include <vector>
    \n-#include <functional>
    \n-#include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.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-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n+\n+\n \n

    \n Classes

    class  Dune::LocalFiniteElementFunctionBase< FE >
     Return a proper base class for functions to use with LocalInterpolation. More...
     
    struct  Dune::LocalFiniteElementFunctionBase< FE >::FunctionBaseDummy::Traits
     
    class  Dune::LocalBasisVirtualInterface< T >
     virtual base class for a local basis More...
     
    class  Dune::LocalInterpolationVirtualInterfaceBase< DomainType, RangeType >
     virtual base class for a local interpolation More...
     
    class  Dune::LocalInterpolationVirtualInterface< DomainType, RangeType >
     virtual base class for a local interpolation More...
     
    class  Dune::LocalCoefficientsVirtualInterface
     virtual base class for local coefficients More...
     
    class  Dune::LocalFiniteElementVirtualInterface< T >
     virtual base class for local finite elements with functions More...
    class  Dune::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,46 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-virtualinterface.hh File Reference\n-#include \n+brezzidouglasmarini2simplex2dlocalbasis.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_\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-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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 \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_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bF_\bE_\b _\b>\n-\u00a0 Return a proper base class for functions to use with\n- LocalInterpolation. _\bM_\bo_\br_\be_\b._\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_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bF_\bE_\b _\b>_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\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_\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+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/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: virtualinterface.hh Source File\n+dune-localfunctions: brezzidouglasmarini2simplex2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,300 +70,334 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    virtualinterface.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <type_traits>
    \n-
    9#include <array>
    \n-
    10#include <vector>
    \n-
    11#include <functional>
    \n+
    8#include <array>
    \n+
    9#include <bitset>
    \n+
    10#include <numeric>
    \n+
    11#include <vector>
    \n
    12
    \n-
    13#include <dune/geometry/type.hh>
    \n+
    13#include <dune/common/fmatrix.hh>
    \n
    14
    \n-\n-\n-\n-\n-
    19
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22
    \n-
    23 // forward declaration needed by the helper traits
    \n-
    24 template<class DomainType, class RangeType>
    \n-
    25 class LocalInterpolationVirtualInterface;
    \n-
    26
    \n-
    27 // -----------------------------------------------------------------
    \n-
    28 // Helper traits classes
    \n-
    29 // -----------------------------------------------------------------
    \n-
    30
    \n-
    43 template<class FE>
    \n-
    \n-
    44 class
    \n-
    45 [[deprecated("Dune::LocalFiniteElementFunctionBase is deprecated after Dune 2.7. You can now pass functions providing operator() to interpolate.")]]
    \n-\n-
    47 {
    \n-
    48 typedef typename FE::Traits::LocalBasisType::Traits::DomainType Domain;
    \n-
    49 typedef typename FE::Traits::LocalBasisType::Traits::RangeType Range;
    \n-
    50
    \n-
    51 // Hack: Keep a copy of Dune::Function here. This allows to avoid depending
    \n-
    52 // on the deprecated dune-common header while still keeping the LocalFiniteElementFunctionBase
    \n-
    53 // mechanism working during its deprecation period.
    \n-
    54 class FunctionBaseDummy
    \n-
    55 {
    \n-
    56 public:
    \n-
    57
    \n-
    58 using RangeType = Range;
    \n-
    59 using DomainType = Domain;
    \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+
    43
    \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-
    61 struct Traits
    \n-
    62 {
    \n-
    63 using RangeType = Range;
    \n-
    64 using DomainType = Domain;
    \n-
    65 };
    \n-
    \n-
    66
    \n-
    67 void evaluate(const DomainType& x, RangeType& y) const;
    \n-
    68 };
    \n-
    69
    \n-
    70 public:
    \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 using VirtualFunctionBase = FunctionBaseDummy;
    \n-
    73 using FunctionBase = FunctionBaseDummy;
    \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-
    80 using type = FunctionBaseDummy;
    \n-
    81 };
    \n-
    \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
    \n-
    84
    \n-
    85 // -----------------------------------------------------------------
    \n-
    86 // Basis
    \n-
    87 // -----------------------------------------------------------------
    \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-
    95 template<class T>
    \n-
    \n-\n-
    97 {
    \n-
    98 public:
    \n-
    99 using Traits = T;
    \n-
    100
    \n-
    101
    \n-\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-
    105 virtual unsigned int size () const = 0;
    \n-
    106
    \n-
    108 virtual unsigned int order () const = 0;
    \n-
    109
    \n-
    115 virtual void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    116 std::vector<typename Traits::RangeType>& out) const = 0;
    \n-
    117
    \n-
    126 virtual void evaluateJacobian(const typename Traits::DomainType& in, // position
    \n-
    127 std::vector<typename Traits::JacobianType>& out) const = 0;
    \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-
    134 virtual void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n-
    135 const typename Traits::DomainType& in,
    \n-
    136 std::vector<typename Traits::RangeType>& out) const = 0;
    \n-
    137 };
    \n-
    \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
    \n-
    141 // -----------------------------------------------------------------
    \n-
    142 // Interpolation
    \n-
    143 // -----------------------------------------------------------------
    \n-
    144
    \n-
    157 template<class DomainType, class RangeType>
    \n-
    \n-\n-
    159 {
    \n-
    160 public:
    \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-
    163 using FunctionType = std::function<RangeType(DomainType)>;
    \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-
    166 typedef typename RangeType::field_type CoefficientType;
    \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-\n+
    168
    \n
    169
    \n-
    177 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n-
    178 };
    \n-
    \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-
    187 template<class DomainType, class RangeType>
    \n-
    \n-\n-
    189 : public LocalInterpolationVirtualInterfaceBase<DomainType, RangeType>
    \n-
    190 {
    \n-
    191 public:
    \n-
    192
    \n-
    194 using FunctionType = std::function<RangeType(DomainType)>;
    \n-
    195
    \n-
    197 typedef typename RangeType::field_type CoefficientType;
    \n-
    198
    \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-\n-
    201
    \n-
    202 // This method is only noted again for to make the documentation complete.
    \n-
    203
    \n-
    211 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n-
    212
    \n-
    218 template<class F,
    \n-
    219 std::enable_if_t<not std::is_base_of<FunctionType, F>::value, int> = 0>
    \n-
    \n-
    220 void interpolate (const F& ff, std::vector<CoefficientType>& out) const
    \n-
    221 {
    \n-
    222 const auto& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n-
    223
    \n-\n-
    225 asBase.interpolate(FunctionType(std::cref(f)),out);
    \n-
    226 }
    \n-
    \n-
    227
    \n-
    233 template<class F, class C>
    \n-
    \n-
    234 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    235 {
    \n-
    236 const auto& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n-
    237
    \n-
    238 std::vector<CoefficientType> outDummy;
    \n-\n-
    240 asBase.interpolate(FunctionType(std::cref(f)),outDummy);
    \n-
    241 out.resize(outDummy.size());
    \n-
    242 for(typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
    \n-
    243 out[i] = outDummy[i];
    \n-
    244 }
    \n-
    \n-
    245 };
    \n-
    \n-
    246
    \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
    \n-
    249 // -----------------------------------------------------------------
    \n-
    250 // Coefficients
    \n-
    251 // -----------------------------------------------------------------
    \n-
    252
    \n-
    \n-\n-
    259 {
    \n-
    260 public:
    \n-
    261
    \n-\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-
    265 virtual std::size_t size () const = 0;
    \n+
    264 out[1][0] = 3*in[0];
    \n+
    265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];
    \n
    266
    \n-
    268 const virtual LocalKey& localKey (std::size_t i) const = 0;
    \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 };
    \n-
    \n-
    271
    \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
    \n-
    274 // -----------------------------------------------------------------
    \n-
    275 // Finite Element
    \n-
    276 // -----------------------------------------------------------------
    \n-
    277
    \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-
    284 template<class T>
    \n-
    \n-\n-
    286 {
    \n-
    287 using LocalBasisTraits = T;
    \n-
    288 public:
    \n-\n-\n-\n-\n-\n-\n-
    295
    \n-\n-
    297
    \n-
    299 virtual const typename Traits::LocalBasisType& localBasis () const = 0;
    \n-
    300
    \n-
    302 virtual const typename Traits::LocalCoefficientsType& localCoefficients () const = 0;
    \n-
    303
    \n-
    305 virtual const typename Traits::LocalInterpolationType& localInterpolation () const = 0;
    \n-
    306
    \n-
    308 virtual unsigned int size () const = 0;
    \n-
    309
    \n-
    311 virtual const GeometryType type () const = 0;
    \n-
    312
    \n-\n-
    314 };
    \n-
    \n-
    315}
    \n-
    316#endif
    \n-\n-\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
    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:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    R RangeType
    range type
    Definition common/localbasis.hh:51
    \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:23
    \n-
    virtual base class for a local interpolation
    Definition virtualinterface.hh:190
    \n-
    virtual ~LocalInterpolationVirtualInterface()
    Definition virtualinterface.hh:200
    \n-
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:194
    \n-
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:197
    \n-
    void interpolate(const F &ff, std::vector< CoefficientType > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:220
    \n-
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
    determine coefficients interpolating a given function
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:234
    \n-
    Return a proper base class for functions to use with LocalInterpolation.
    Definition virtualinterface.hh:47
    \n-
    FunctionBaseDummy FunctionBase
    Definition virtualinterface.hh:73
    \n-
    FunctionBaseDummy VirtualFunctionBase
    Definition virtualinterface.hh:72
    \n-
    FunctionBaseDummy type
    Base class type for functions to use with LocalInterpolation.
    Definition virtualinterface.hh:80
    \n-\n-\n-
    Domain DomainType
    Definition virtualinterface.hh:64
    \n-
    virtual base class for a local basis
    Definition virtualinterface.hh:97
    \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:99
    \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:102
    \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:159
    \n-
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:163
    \n-
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:166
    \n-
    virtual ~LocalInterpolationVirtualInterfaceBase()
    Definition virtualinterface.hh:168
    \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:259
    \n-
    virtual ~LocalCoefficientsVirtualInterface()
    Definition virtualinterface.hh:262
    \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:286
    \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:294
    \n-
    virtual ~LocalFiniteElementVirtualInterface()
    Definition virtualinterface.hh:296
    \n-
    virtual const Traits::LocalCoefficientsType & localCoefficients() const =0
    \n-\n-\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,390 +1,348 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+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#include \n-11#include \n+8#include \n+9#include \n+10#include \n+11#include \n 12\n-13#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_\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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_\bk_\be_\by_\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\n-20namespace _\bD_\bu_\bn_\be\n-21{\n-22\n-23 // forward declaration needed by the helper traits\n-24 template\n-25 class LocalInterpolationVirtualInterface;\n-26\n-27 // -----------------------------------------------------------------\n-28 // Helper traits classes\n-29 // -----------------------------------------------------------------\n-30\n-43 template\n-_\b4_\b4 class\n-45 [[deprecated(\"Dune::LocalFiniteElementFunctionBase is deprecated after Dune\n-2.7. You can now pass functions providing operator() to interpolate.\")]]\n-46 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-47 {\n-48 typedef typename FE::Traits::LocalBasisType::Traits::DomainType Domain;\n-49 typedef typename FE::Traits::LocalBasisType::Traits::RangeType Range;\n-50\n-51 // Hack: Keep a copy of Dune::Function here. This allows to avoid depending\n-52 // on the deprecated dune-common header while still keeping the\n-LocalFiniteElementFunctionBase\n-53 // mechanism working during its deprecation period.\n-54 class FunctionBaseDummy\n-55 {\n-56 public:\n-57\n-58 using RangeType = Range;\n-59 using DomainType = Domain;\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 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_\b1 struct _\bT_\br_\ba_\bi_\bt_\bs\n-62 {\n-_\b6_\b3 using _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be = Range;\n-_\b6_\b4 using _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be = Domain;\n-65 };\n-66\n-67 void evaluate(const DomainType& x, RangeType& y) const;\n-68 };\n-69\n-70 public:\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-_\b7_\b2 using _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be = FunctionBaseDummy;\n-_\b7_\b3 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be = FunctionBaseDummy;\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-_\b8_\b0 using _\bt_\by_\bp_\be = FunctionBaseDummy;\n-81 };\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\n-84\n-85 // -----------------------------------------------------------------\n-86 // Basis\n-87 // -----------------------------------------------------------------\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-95 template\n-_\b9_\b6 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-97 {\n-98 public:\n-_\b9_\b9 using _\bT_\br_\ba_\bi_\bt_\bs = T;\n-100\n-101\n-_\b1_\b0_\b2 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+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-_\b1_\b0_\b5 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n-106\n-_\b1_\b0_\b8 virtual unsigned int _\bo_\br_\bd_\be_\br () const = 0;\n-109\n-_\b1_\b1_\b5 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename Traits::DomainType& in,\n-116 std::vector& out) const = 0;\n-117\n-_\b1_\b2_\b6 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-127 std::vector& out) const = 0;\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-_\b1_\b3_\b4 virtual void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array&\n-_\bo_\br_\bd_\be_\br,\n-135 const typename Traits::DomainType& in,\n-136 std::vector& out) const = 0;\n-137 };\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\n-141 // -----------------------------------------------------------------\n-142 // Interpolation\n-143 // -----------------------------------------------------------------\n-144\n-157 template\n-_\b1_\b5_\b8 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-159 {\n-160 public:\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-_\b1_\b6_\b3 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\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-_\b1_\b6_\b6 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\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-_\b1_\b6_\b8 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+168\n 169\n-_\b1_\b7_\b7 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-178 };\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-187 template\n-_\b1_\b8_\b8 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-189 : 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-190 {\n-191 public:\n-192\n-_\b1_\b9_\b4 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\n-195\n-_\b1_\b9_\b7 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n-198\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-_\b2_\b0_\b0 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-201\n-202 // This method is only noted again for to make the documentation complete.\n-203\n-_\b2_\b1_\b1 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-212\n-218 template::value, int> = 0>\n-_\b2_\b2_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-221 {\n-222 const auto& f = Impl::makeFunctionWithCallOperator(ff);\n-223\n-224 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-225 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-226 }\n-227\n-233 template\n-_\b2_\b3_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-235 {\n-236 const auto& f = Impl::makeFunctionWithCallOperator(ff);\n-237\n-238 std::vector outDummy;\n-239 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-240 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-241 out.resize(outDummy.size());\n-242 for(typename std::vector::size_type i=0; i& _\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\n-249 // -----------------------------------------------------------------\n-250 // Coefficients\n-251 // -----------------------------------------------------------------\n-252\n-_\b2_\b5_\b8 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_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-259 {\n-260 public:\n-261\n-_\b2_\b6_\b2 virtual _\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+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-_\b2_\b6_\b5 virtual std::size_t _\bs_\bi_\bz_\be () const = 0;\n+264 out[1][0] = 3*in[0];\n+265 out[1][1] = 10.5 - 15*in[0] - 15*in[1];\n 266\n-_\b2_\b6_\b8 const virtual _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const = 0;\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 };\n-271\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\n-274 // -----------------------------------------------------------------\n-275 // Finite Element\n-276 // -----------------------------------------------------------------\n-277\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-284 template\n-_\b2_\b8_\b5 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-286 {\n-287 using LocalBasisTraits = T;\n-288 public:\n-289 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-290 _\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-291 _\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-292 _\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-293 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_\b9_\b4 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-295\n-_\b2_\b9_\b6 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-297\n-_\b2_\b9_\b9 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-300\n-_\b3_\b0_\b2 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-303\n-_\b3_\b0_\b5 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-306\n-_\b3_\b0_\b8 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n-309\n-_\b3_\b1_\b1 virtual const GeometryType _\bt_\by_\bp_\be () const = 0;\n-312\n-_\b3_\b1_\b3 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-314 };\n-315}\n-316#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+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:_\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 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:34\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:42\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:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\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:23\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:190\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:200\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:194\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:197\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 &ff, 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:220\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 &ff, 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:234\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-Return a proper base class for functions to use with LocalInterpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.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_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-FunctionBaseDummy FunctionBase\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:73\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n-FunctionBaseDummy VirtualFunctionBase\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:72\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bt_\by_\bp_\be\n-FunctionBaseDummy type\n-Base class type for functions to use with LocalInterpolation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:62\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n-Range RangeType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:63\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n-Domain DomainType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:64\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:97\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:99\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: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_\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:159\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: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_\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:166\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: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_\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:259\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:262\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:286\n-_\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:294\n-_\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:296\n-_\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-_\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/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: virtualwrappers.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    virtualwrappers.hh File Reference
    \n+
    brezzidouglasmarini1cube3dlocalcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/common/virtualinterface.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-\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::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,39 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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:_\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/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: virtualwrappers.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,410 +70,79 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    virtualwrappers.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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH
    \n
    7
    \n-
    8#include <array>
    \n-
    9
    \n-\n-\n-\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+
    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-
    \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-
    64
    \n-
    65
    \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-
    \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-
    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-
    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+
    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-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    R RangeType
    range type
    Definition common/localbasis.hh:51
    \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+
    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:23
    \n-
    virtual base class for a local interpolation
    Definition virtualinterface.hh:190
    \n-
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:194
    \n-
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:197
    \n-
    virtual base class for a local basis
    Definition virtualinterface.hh:97
    \n-
    virtual base class for local coefficients
    Definition virtualinterface.hh:259
    \n-
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:286
    \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 contructor 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 \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,489 +1,78 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALCOEFFICIENTS_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-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+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_\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-_\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-_\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\n-59\n-60 // -----------------------------------------------------------------\n-61 // Basis\n-62 // -----------------------------------------------------------------\n-63\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-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-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 // -----------------------------------------------------------------\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+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:_\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:42\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:51\n-_\bD_\bu_\bn_\be_\b:_\b:_\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:_\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:23\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:190\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:194\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:197\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:97\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:259\n-_\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:286\n-_\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 contructor 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-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-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 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/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: localfiniteelementtraits.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,31 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    localfiniteelementtraits.hh File Reference
    \n+
    brezzidouglasmarini1cube3dlocalbasis.hh File Reference
    \n
    \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

    struct  Dune::LocalFiniteElementTraits< LB, LC, LI >
     traits helper struct More...
    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,19 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-localfiniteelementtraits.hh File Reference\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-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:_\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/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: localfiniteelementtraits.hh Source File\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,50 +70,322 @@\n
    \n \n \n \n \n \n \n
    \n-
    localfiniteelementtraits.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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_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+
    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+
    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
    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 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:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,48 +1,334 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALBASIS_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 \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+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 _\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:_\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+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:34\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: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/a00155.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: localfiniteelementvariantcache.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,33 @@\n \n \n \n \n \n \n \n
    \n \n-
    localfiniteelementvariantcache.hh File Reference
    \n+
    brezzidouglasmarini1cube3dlocalinterpolation.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 <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::LocalFiniteElementVariantCache< Base >
     A cache storing a compile time selection of local finite element implementations. More...
    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,31 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-localfiniteelementvariantcache.hh File Reference\n+brezzidouglasmarini1cube3dlocalinterpolation.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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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 _\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+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/a00155_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00155_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: brezzidouglasmarini1cube3dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,138 +70,134 @@\n
    \n \n \n \n \n \n \n
    \n-
    localfiniteelementvariantcache.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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_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+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \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-
    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-
    120 template<class... Key>
    \n-
    \n-
    121 const auto& get(const Key&... key) const
    \n-
    122 {
    \n-
    123 auto implIndex = index(key...);
    \n-
    124 if (implIndex >= cache_.size())
    \n-
    125 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n-
    126 if (not(cache_[implIndex]))
    \n-
    127 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n-
    128 return cache_[implIndex];
    \n-
    129 }
    \n-
    \n-
    130
    \n-
    131private:
    \n-
    132 std::vector<FiniteElementType> cache_;
    \n-
    133};
    \n-
    \n-
    134
    \n-
    135
    \n-
    136
    \n-
    137} // namespace Dune
    \n-
    138
    \n-
    139
    \n-
    140
    \n-
    141
    \n-
    142#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_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-
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \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:121
    \n-
    LocalFiniteElementVariantCache(const LocalFiniteElementVariantCache &other)=default
    Copy constructor.
    \n-
    typename GenerateLFEVariant< Implementations >::type FiniteElementType
    Type of exported LocalFiniteElement's.
    Definition localfiniteelementvariantcache.hh:92
    \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,148 +1,134 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE3D_LOCALINTERPOLATION_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+9\n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\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 // 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-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-120 template\n-_\b1_\b2_\b1 const auto& _\bg_\be_\bt(const Key&... key) const\n-122 {\n-123 auto implIndex = index(key...);\n-124 if (implIndex >= cache_.size())\n-125 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n-requested type.\");\n-126 if (not(cache_[implIndex]))\n-127 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n-requested type.\");\n-128 return cache_[implIndex];\n-129 }\n-130\n-131private:\n-132 std::vector cache_;\n-133};\n-134\n-135\n-136\n-137} // namespace Dune\n-138\n-139\n-140\n-141\n-142#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+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 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 _\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:_\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:121\n-_\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:_\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/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: localtoglobaladaptors.hh File Reference\n+dune-localfunctions: brezzidouglasmarinicube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,51 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    localtoglobaladaptors.hh File Reference
    \n+
    brezzidouglasmarinicube.hh File Reference
    \n
    \n
    \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-\n-\n+\n+\n \n

    \n Classes

    struct  Dune::LocalToGlobalBasisAdaptorTraits< LocalBasisTraits, dimDomainGlobal_ >
     Traits class for local-to-global basis adaptors. 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::ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry >
     Convert a simple scalar local basis into a global basis. 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::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...
    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,44 +1,34 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-localtoglobaladaptors.hh File Reference\n-#include \n-#include \n-#include \n-#include \n-#include \n-#include \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-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:_\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/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: localtoglobaladaptors.hh Source File\n+dune-localfunctions: brezzidouglasmarinicube.hh Source File\n \n \n \n \n \n \n \n@@ -70,270 +70,112 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    localtoglobaladaptors.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 (C) 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-
    10#include <vector>
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH
    \n+
    7
    \n+\n+\n+\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+
    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-\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+\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+
    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-
    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+\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-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:45
    \n-
    static constexpr int dimRange
    dimension of the range
    Definition common/localbasis.hh:48
    \n-
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:36
    \n-
    static constexpr int dimDomain
    dimension of the domain
    Definition common/localbasis.hh:39
    \n-
    R RangeType
    range type
    Definition common/localbasis.hh:51
    \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+
    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,333 +1,122 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-10#include \n+5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINICUBE_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#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+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+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-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+_\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_\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+_\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_\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:42\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: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_\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:48\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:36\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:39\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:51\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:_\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/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: localfiniteelementvariant.hh File Reference\n+dune-localfunctions: brezzidouglasmarinisimplex.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-
    localfiniteelementvariant.hh File Reference
    \n+
    brezzidouglasmarinisimplex.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 \n

    \n Classes

    class  Dune::LocalFiniteElementVariant< Implementations >
     Type erasure class for wrapping LocalFiniteElement classes. 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,29 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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+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/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: localfiniteelementvariant.hh Source File\n+dune-localfunctions: brezzidouglasmarinisimplex.hh Source File\n \n \n \n \n \n \n \n@@ -70,387 +70,88 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    localfiniteelementvariant.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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <type_traits>
    \n-
    10#include <variant>
    \n+\n+\n+
    10
    \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+
    12namespace Dune
    \n+
    13{
    \n+
    22 template<class D, class R, unsigned int dim, unsigned int order>
    \n+\n
    24
    \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<class I0, class... II>
    \n-
    44 struct FirstType
    \n-
    45 { using type = I0; };
    \n+
    28 template<class D, class R>
    \n+\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+
    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:34
    \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:23
    \n-\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,423 +1,93 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_BREZZIDOUGLASMARINISIMPLEX_HH\n 7\n-8#include \n-9#include \n-10#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\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+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-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\n-44 struct FirstType\n-45 { using type = I0; };\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-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+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_\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 _\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:34\n-_\bD_\bu_\bn_\be_\b:_\b:_\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:23\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\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/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: interfaceswitch.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,34 @@\n \n \n \n \n \n \n \n
    \n \n-
    interfaceswitch.hh File Reference
    \n+
    brezzidouglasmarini1simplex2dlocalinterpolation.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+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.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::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...
    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,30 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-interfaceswitch.hh File Reference\n-#include \n-#include \n+brezzidouglasmarini1simplex2dlocalinterpolation.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_\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:_\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+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/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: interfaceswitch.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,198 +70,134 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    interfaceswitch.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    7
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+\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+
    13namespace Dune
    \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-
    \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+
    33
    \n+
    \n+\n+
    40 {
    \n+
    41 using std::sqrt;
    \n+
    42 sign0 = sign1 = sign2 = 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
    \n+
    56 n0[0] = 0.0;
    \n+
    57 n0[1] = -1.0;
    \n+
    58 n1[0] = -1.0;
    \n+
    59 n1[1] = 0.0;
    \n+
    60 n2[0] = 1.0/sqrt(2.0);
    \n+
    61 n2[1] = 1.0/sqrt(2.0);
    \n+
    62 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n+
    63 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n+
    64 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    75 template<typename F, typename C>
    \n+
    \n+
    76 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    77 {
    \n+
    78 // f gives v*outer normal at a point on the edge!
    \n+
    79 typedef typename LB::Traits::RangeFieldType Scalar;
    \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+
    81 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    82
    \n+
    83 out.resize(6);
    \n+
    84 fill(out.begin(), out.end(), 0.0);
    \n+
    85
    \n+
    86 const int qOrder = 4;
    \n+
    87 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n+
    88
    \n+
    89 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n+
    90 {
    \n+
    91 Scalar qPos = it->position();
    \n+
    92 typename LB::Traits::DomainType localPos;
    \n+
    93
    \n+
    94 localPos[0] = qPos;
    \n+
    95 localPos[1] = 0.0;
    \n+
    96 auto y = f(localPos);
    \n+
    97 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n+
    98 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;
    \n+
    99
    \n+
    100 localPos[0] = 0.0;
    \n+
    101 localPos[1] = qPos;
    \n+
    102 y = f(localPos);
    \n+
    103 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;
    \n+
    104 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;
    \n+
    105
    \n+
    106 localPos[0] = 1.0 - qPos;
    \n+
    107 localPos[1] = qPos;
    \n+
    108 y = f(localPos);
    \n+
    109 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n+
    110 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;
    \n+
    111 }
    \n+
    112 }
    \n+
    \n+
    113
    \n+
    114 private:
    \n+
    115 typename LB::Traits::RangeFieldType sign0,sign1,sign2;
    \n+
    116 typename LB::Traits::DomainType n0,n1,n2;
    \n+
    117 typename LB::Traits::RangeFieldType c0,c1,c2;
    \n+
    118 };
    \n+
    \n+
    119}
    \n+
    120
    \n+
    121#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_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+
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:25
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:76
    \n+
    BDM1Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:39
    \n+
    BDM1Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.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,230 +1,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+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\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+13namespace _\bD_\bu_\bn_\be\n+14{\n+23 template\n+_\b2_\b4 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+25 {\n+26\n+27 public:\n+_\b2_\b9 _\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+30 {\n+31 sign0 = sign1 = sign2 = 1.0;\n+32 }\n+33\n+_\b3_\b9 _\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+40 {\n+41 using std::sqrt;\n+42 sign0 = sign1 = sign2 = 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\n+56 n0[0] = 0.0;\n+57 n0[1] = -1.0;\n+58 n1[0] = -1.0;\n+59 n1[1] = 0.0;\n+60 n2[0] = 1.0/sqrt(2.0);\n+61 n2[1] = 1.0/sqrt(2.0);\n+62 c0 = 0.5*n0[0] - 1.0*n0[1];\n+63 c1 = -1.0*n1[0] + 0.5*n1[1];\n+64 c2 = 0.5*n2[0] + 0.5*n2[1];\n+65 }\n+66\n+75 template\n+_\b7_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+77 {\n+78 // f gives v*outer normal at a point on the edge!\n+79 typedef typename LB::Traits::RangeFieldType Scalar;\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+81 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+82\n+83 out.resize(6);\n+84 fill(out.begin(), out.end(), 0.0);\n+85\n+86 const int qOrder = 4;\n+87 const Dune::QuadratureRule& rule = Dune::\n+QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n+88\n+89 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n+(); it!=rule.end(); ++it)\n+90 {\n+91 Scalar qPos = it->position();\n+92 typename LB::Traits::DomainType localPos;\n+93\n+94 localPos[0] = qPos;\n+95 localPos[1] = 0.0;\n+96 auto y = f(localPos);\n+97 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n+98 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;\n+99\n+100 localPos[0] = 0.0;\n+101 localPos[1] = qPos;\n+102 y = f(localPos);\n+103 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;\n+104 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;\n+105\n+106 localPos[0] = 1.0 - qPos;\n+107 localPos[1] = qPos;\n+108 y = f(localPos);\n+109 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n+110 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;\n+111 }\n+112 }\n+113\n+114 private:\n+115 typename LB::Traits::RangeFieldType sign0,sign1,sign2;\n+116 typename LB::Traits::DomainType n0,n1,n2;\n+117 typename LB::Traits::RangeFieldType c0,c1,c2;\n+118 };\n+119}\n+120\n+121#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:_\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+_\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:25\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 &ff, 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:76\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:39\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:29\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/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: raviartthomas.hh File Reference\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,41 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas.hh File Reference
    \n+ \n+
    brezzidouglasmarini1simplex2dlocalcoefficients.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,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+brezzidouglasmarini1simplex2dlocalcoefficients.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+\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: raviartthomas.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,59 +70,78 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas.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 (C) 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_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_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-\n-\n-\n-
    Convenience header that includes all available Raviart-Thomas local finite elements for cubes.
    \n-\n-\n-\n-\n-\n-\n-\n-\n-
    Raviart-Thomas local finite elements of arbitrary order for simplices of arbitrary dimension.
    \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+
    52}
    \n+
    53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_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:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,53 +1,79 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_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_\b0_\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-_\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_\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_\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_\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_\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-_\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_\b0_\bc_\bu_\bb_\be_\b3_\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+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:_\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: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/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: rannacherturek3dlocalbasis.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-
    rannacherturek3dlocalbasis.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/fvector.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.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

    class  Dune::RannacherTurek3DLocalBasis< D, R >
    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,24 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-rannacherturek3dlocalbasis.hh File Reference\n+brezzidouglasmarini1simplex2dlocalbasis.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 \"_\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_\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:_\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/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: rannacherturek3dlocalbasis.hh Source File\n+dune-localfunctions: brezzidouglasmarini1simplex2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,167 +70,215 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannacherturek3dlocalbasis.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 (C) 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_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/fvector.hh>
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13
    \n-\n-
    15
    \n-
    16namespace Dune
    \n-
    17{
    \n-
    18
    \n-
    19 template< class D, class R >
    \n-
    \n-\n-
    21 {
    \n-
    22 static const int coefficients[ 6 ][ 6 ];
    \n-
    23
    \n-
    24 public:
    \n-\n-
    26 R, 1, FieldVector< R, 1 >,
    \n-
    27 FieldMatrix< R, 1, 3 > > Traits;
    \n-
    28
    \n-
    \n-
    30 unsigned int size () const
    \n-
    31 {
    \n-
    32 return 6;
    \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 typedef typename Traits::RangeFieldType RangeFieldType;
    \n-
    40 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],
    \n-
    41 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],
    \n-
    42 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };
    \n-
    43 out.resize( size() );
    \n-
    44 for( unsigned int i = 0; i < size(); ++i )
    \n-
    45 {
    \n-
    46 out[ i ] = RangeFieldType( 0 );
    \n-
    47 for( unsigned int j = 0; j < 6; ++j )
    \n-
    48 out[ i ] += coefficients[ i ][ j ]*y[ j ];
    \n-
    49 out[ i ] /= RangeFieldType( 3 );
    \n-
    50 }
    \n-
    51 }
    \n-
    \n-
    52
    \n-
    \n-
    54 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n-
    55 std::vector< typename Traits::JacobianType > &out ) const
    \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+
    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 typedef typename Traits::RangeFieldType RangeFieldType;
    \n-
    58 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };
    \n-
    59 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };
    \n-
    60 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };
    \n-
    61
    \n-
    62 out.resize( size() );
    \n-
    63 for( unsigned int i = 0; i < size(); ++i )
    \n-
    64 {
    \n-
    65 out[ i ] = RangeFieldType( 0 );
    \n-
    66 for( unsigned int j = 0; j < 5; ++j )
    \n-
    67 {
    \n-
    68 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];
    \n-
    69 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];
    \n-
    70 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];
    \n-
    71 }
    \n-
    72 out[ i ] /= RangeFieldType( 3 );
    \n-
    73 }
    \n-
    74 }
    \n-
    \n-
    75
    \n-
    \n-
    77 void partial (const std::array<unsigned int, 3>& order,
    \n-
    78 const typename Traits::DomainType& in, // position
    \n-
    79 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    80 {
    \n-
    81 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    82 if (totalOrder == 0) {
    \n-
    83 evaluateFunction(in, out);
    \n-
    84 } else if (totalOrder == 1) {
    \n-
    85 out.resize(size());
    \n-
    86 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    87
    \n-
    88 using RangeFieldType = typename Traits::RangeFieldType;
    \n-
    89 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },
    \n-
    90 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },
    \n-
    91 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };
    \n-
    92
    \n-
    93 for (std::size_t i = 0; i < size(); ++i) {
    \n-
    94 out[i] = RangeFieldType{0};
    \n-
    95 for (std::size_t j = 0; j < 5; ++j)
    \n-
    96 out[i] += coefficients[i][j+1] * y[direction][j];
    \n-
    97 out[i] /= RangeFieldType{3};
    \n-
    98 }
    \n-
    99 } else {
    \n-
    100 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    101 }
    \n-
    102 }
    \n-
    \n-
    103
    \n-
    \n-
    105 unsigned int order () const
    \n-
    106 {
    \n-
    107 return 2;
    \n-
    108 }
    \n-
    \n-
    109 };
    \n+
    57 return 6;
    \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(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
    \n-
    112
    \n-
    113 // RannacherTurek3DLocalBasis::coefficients
    \n-
    114 // ----------------------------------------
    \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 template< class D, class R >
    \n-
    117 const int RannacherTurek3DLocalBasis< D, R >
    \n-
    118 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },
    \n-
    119 { -1, -1, 2, 2, 4, 2 },
    \n-
    120 { 2, 2, -7, 2, -2, 2 },
    \n-
    121 { -1, 2, -1, 2, -2, 2 },
    \n-
    122 { 2, 2, 2, -7, -2, -4 },
    \n-
    123 { -1, 2, 2, -1, -2, -4 }};
    \n-
    124
    \n-
    125} //namespace Dune
    \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-
    127#endif // #ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH
    \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
    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:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:45
    \n-
    Definition rannacherturek3dlocalbasis.hh:21
    \n-
    LocalBasisTraits< D, 3, FieldVector< D, 3 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 3 > > Traits
    Definition rannacherturek3dlocalbasis.hh:27
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek3dlocalbasis.hh:36
    \n-
    unsigned int size() const
    number of shape functions
    Definition rannacherturek3dlocalbasis.hh:30
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek3dlocalbasis.hh:54
    \n-
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek3dlocalbasis.hh:105
    \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:77
    \n-\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,179 +1,228 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_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-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-19 template< class D, class R >\n-_\b2_\b0 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-21 {\n-22 static const int coefficients[ 6 ][ 6 ];\n-23\n-24 public:\n-25 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-26 R, 1, FieldVector< R, 1 >,\n-_\b2_\b7 FieldMatrix< R, 1, 3 > > _\bT_\br_\ba_\bi_\bt_\bs;\n-28\n-_\b3_\b0 unsigned int _\bs_\bi_\bz_\be () const\n-31 {\n-32 return 6;\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+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_\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_\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 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-40 RangeFieldType y[ 6 ] = { 1, in[ 0 ], in[ 1 ], in[ 2 ],\n-41 in[ 0 ]*in[ 0 ] - in[ 1 ]*in[ 1 ],\n-42 in[ 1 ]*in[ 1 ] - in[ 2 ]*in[ 2 ] };\n-43 out.resize( _\bs_\bi_\bz_\be() );\n-44 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n-45 {\n-46 out[ i ] = RangeFieldType( 0 );\n-47 for( unsigned int j = 0; j < 6; ++j )\n-48 out[ i ] += coefficients[ i ][ j ]*y[ j ];\n-49 out[ i ] /= RangeFieldType( 3 );\n-50 }\n-51 }\n-52\n-_\b5_\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-55 std::vector< typename Traits::JacobianType > &out ) const\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 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-58 RangeFieldType y0[ 5 ] = { 1, 0, 0, 2*in[ 0 ], 0 };\n-59 RangeFieldType y1[ 5 ] = { 0, 1, 0, -2*in[ 1 ], 2*in[ 1 ] };\n-60 RangeFieldType y2[ 5 ] = { 0, 0, 1, 0, -2*in[ 2 ] };\n-61\n-62 out.resize( _\bs_\bi_\bz_\be() );\n-63 for( unsigned int i = 0; i < _\bs_\bi_\bz_\be(); ++i )\n-64 {\n-65 out[ i ] = RangeFieldType( 0 );\n-66 for( unsigned int j = 0; j < 5; ++j )\n-67 {\n-68 out[ i ][ 0 ][ 0 ] += coefficients[ i ][ j+1 ]*y0[ j ];\n-69 out[ i ][ 0 ][ 1 ] += coefficients[ i ][ j+1 ]*y1[ j ];\n-70 out[ i ][ 0 ][ 2 ] += coefficients[ i ][ j+1 ]*y2[ j ];\n-71 }\n-72 out[ i ] /= RangeFieldType( 3 );\n-73 }\n-74 }\n-75\n-_\b7_\b7 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-78 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-79 std::vector& out) const // return value\n-80 {\n-81 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-82 if (totalOrder == 0) {\n-83 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-84 } else if (totalOrder == 1) {\n-85 out.resize(_\bs_\bi_\bz_\be());\n-86 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-87\n-88 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-89 RangeFieldType y[3][5] = { { 1.0, 0.0, 0.0, 2*in[0], 0.0 },\n-90 { 0.0, 1.0, 0.0, -2*in[1], 2*in[1] },\n-91 { 0.0, 0.0, 1.0, 0.0, -2*in[2] } };\n-92\n-93 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i) {\n-94 out[i] = RangeFieldType{0};\n-95 for (std::size_t j = 0; j < 5; ++j)\n-96 out[i] += coefficients[i][j+1] * y[direction][j];\n-97 out[i] /= RangeFieldType{3};\n-98 }\n-99 } else {\n-100 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n-101 }\n-102 }\n-103\n-_\b1_\b0_\b5 unsigned int _\bo_\br_\bd_\be_\br () const\n-106 {\n-107 return 2;\n-108 }\n-109 };\n+57 return 6;\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\n-112\n-113 // RannacherTurek3DLocalBasis::coefficients\n-114 // ----------------------------------------\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 template< class D, class R >\n-117 const int RannacherTurek3DLocalBasis< D, R >\n-118 ::coefficients[ 6 ][ 6 ] = {{ 2, -7, 2, 2, 4, 2 },\n-119 { -1, -1, 2, 2, 4, 2 },\n-120 { 2, 2, -7, 2, -2, 2 },\n-121 { -1, 2, -1, 2, -2, 2 },\n-122 { 2, 2, 2, -7, -2, -4 },\n-123 { -1, 2, 2, -1, -2, -4 }};\n-124\n-125} //namespace Dune\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-127#endif // #ifndef DUNE_RANNACHER_TUREK_3D_LOCALBASIS_HH\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 _\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+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:34\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:42\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:45\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:21\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:27\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:36\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: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_\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:54\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:105\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:77\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/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: rannacherturek2dlocalbasis.hh File Reference\n+dune-localfunctions: edges0.5.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-
    rannacherturek2dlocalbasis.hh File Reference
    \n+
    edges0.5.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+\n+\n+\n+\n \n

    \n Classes

    struct  Dune::RannacherTurek2DLocalBasis< D, R >
    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.9.0\n Loading...\n Searching...\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+ * _\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-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+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 _\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:_\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/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: rannacherturek2dlocalbasis.hh Source File\n+dune-localfunctions: edges0.5.hh Source File\n \n \n \n \n \n \n \n@@ -70,159 +70,132 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannacherturek2dlocalbasis.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 (C) 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-
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \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-
    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-
    19 template< class D, class R >
    \n-
    \n-\n-
    21 {
    \n-\n-
    23 R, 1, FieldVector< R, 1 >,
    \n-
    24 FieldMatrix< R, 1, 2 > > Traits;
    \n-
    25
    \n-
    \n-
    27 unsigned int size () const
    \n-
    28 {
    \n-
    29 return 4;
    \n-
    30 }
    \n-
    \n-
    31
    \n-
    \n-
    33 inline void evaluateFunction ( const typename Traits::DomainType &in,
    \n-
    34 std::vector< typename Traits::RangeType > &out ) const
    \n-
    35 {
    \n-
    36 out.resize(4);
    \n-
    37 typename Traits::DomainFieldType qbase = in[0]*in[0]-in[1]*in[1];
    \n-
    38 out[0] = .75 - 2*in[0] + in[1] + qbase;
    \n-
    39 out[1] = -.25 + in[1] + qbase;
    \n-
    40 out[2] = .75 + in[0] - 2*in[1] - qbase;
    \n-
    41 out[3] = -.25 + in[0] - qbase;
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-
    45 inline void evaluateJacobian ( const typename Traits::DomainType &in,
    \n-
    46 std::vector< typename Traits::JacobianType > &out ) const
    \n-
    47 {
    \n-
    48 out.resize(4);
    \n-
    49
    \n-
    50 // see http://www.dune-project.org/doc/doxygen/html/classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea
    \n-
    51 // 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-
    52
    \n-
    53 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];
    \n-
    54 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];
    \n-
    55 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];
    \n-
    56 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];
    \n-
    57 }
    \n-
    \n+\n+\n+\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-
    \n-
    60 void partial (const std::array<unsigned int, 2>& order,
    \n-
    61 const typename Traits::DomainType& in, // position
    \n-
    62 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    63 {
    \n-
    64 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    65 if (totalOrder == 0) {
    \n-
    66 evaluateFunction(in, out);
    \n-
    67 } else if (totalOrder == 1) {
    \n-
    68 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    69 out.resize(size());
    \n-
    70
    \n-
    71 switch (direction) {
    \n-
    72 case 0:
    \n-
    73 out[0] = -2 + 2*in[0];
    \n-
    74 out[1] = 2*in[0];
    \n-
    75 out[2] = 1 - 2*in[0];
    \n-
    76 out[3] = 1 - 2*in[0];
    \n-
    77 break;
    \n-
    78 case 1:
    \n-
    79 out[0] = 1 - 2*in[1];
    \n-
    80 out[1] = 1 - 2*in[1];
    \n-
    81 out[2] = -2 + 2*in[1];
    \n-
    82 out[3] = 2*in[1];
    \n-
    83 break;
    \n-
    84 default:
    \n-
    85 DUNE_THROW(RangeError, "Component out of range.");
    \n-
    86 }
    \n-
    87 } else if (totalOrder == 2) {
    \n-
    88 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 2));
    \n-
    89 out.resize(size());
    \n-
    90
    \n-
    91 switch (direction) {
    \n-
    92 case 0:
    \n-
    93 out[0] = out[1] = 2;
    \n-
    94 out[2] = out[3] =-2;
    \n-
    95 break;
    \n-
    96 case 1:
    \n-
    97 out[0] = out[1] =-2;
    \n-
    98 out[2] = out[3] = 2;
    \n-
    99 break;
    \n-
    100 default:
    \n-
    101 out[0] = out[1] = out[2] = out[3] = 0;
    \n-
    102 break;
    \n-
    103 }
    \n-
    104 } else {
    \n-
    105 out[0] = out[1] = out[2] = out[3] = 0;
    \n-
    106 }
    \n-
    107 }
    \n-
    \n-
    108
    \n-
    \n-
    110 unsigned int order () const
    \n-
    111 {
    \n-
    112 // must be 2 here since it contains x^2 and x^2
    \n-
    113 return 2;
    \n-
    114 }
    \n-
    \n-
    115 };
    \n-
    \n-
    116
    \n-
    117} //namespace Dune
    \n-
    118
    \n-
    119#endif // #ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH
    \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+
    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+
    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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:36
    \n-
    Definition rannacherturek2dlocalbasis.hh:21
    \n-
    LocalBasisTraits< D, 2, FieldVector< D, 2 >, R, 1, FieldVector< R, 1 >, FieldMatrix< R, 1, 2 > > Traits
    Definition rannacherturek2dlocalbasis.hh:24
    \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:60
    \n-
    unsigned int size() const
    number of shape functions
    Definition rannacherturek2dlocalbasis.hh:27
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    evaluate all shape functions
    Definition rannacherturek2dlocalbasis.hh:33
    \n-
    unsigned int order() const
    polynomial order of the shape functions
    Definition rannacherturek2dlocalbasis.hh:110
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    evaluate jacobian of all shape functions
    Definition rannacherturek2dlocalbasis.hh:45
    \n-\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:30
    \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,174 +1,151 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-7\n-8#include \n-9#include \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 \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-19 template< class D, class R >\n-_\b2_\b0 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-21 {\n-22 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-23 R, 1, FieldVector< R, 1 >,\n-_\b2_\b4 FieldMatrix< R, 1, 2 > > _\bT_\br_\ba_\bi_\bt_\bs;\n-25\n-_\b2_\b7 unsigned int _\bs_\bi_\bz_\be () const\n-28 {\n-29 return 4;\n-30 }\n-31\n-_\b3_\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-34 std::vector< typename Traits::RangeType > &out ) const\n-35 {\n-36 out.resize(4);\n-37 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-38 out[0] = .75 - 2*in[0] + in[1] + qbase;\n-39 out[1] = -.25 + in[1] + qbase;\n-40 out[2] = .75 + in[0] - 2*in[1] - qbase;\n-41 out[3] = -.25 + in[0] - qbase;\n-42 }\n-43\n-_\b4_\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-46 std::vector< typename Traits::JacobianType > &out ) const\n-47 {\n-48 out.resize(4);\n-49\n-50 // see http://www.dune-project.org/doc/doxygen/html/\n-classDune_1_1C1LocalBasisInterface.html#d6f8368f8aa43439cc7ef10419f6e2ea\n-51 // 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-52\n-53 out[0][0][0] = -2 + 2*in[0]; out[0][0][1] = 1 - 2*in[1];\n-54 out[1][0][0] = 2*in[0]; out[1][0][1] = 1 - 2*in[1];\n-55 out[2][0][0] = 1 - 2*in[0]; out[2][0][1] = -2 + 2*in[1];\n-56 out[3][0][0] = 1 - 2*in[0]; out[3][0][1] = 2*in[1];\n-57 }\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+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-_\b6_\b0 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-61 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 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-65 if (totalOrder == 0) {\n-66 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-67 } else if (totalOrder == 1) {\n-68 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-69 out.resize(_\bs_\bi_\bz_\be());\n-70\n-71 switch (direction) {\n-72 case 0:\n-73 out[0] = -2 + 2*in[0];\n-74 out[1] = 2*in[0];\n-75 out[2] = 1 - 2*in[0];\n-76 out[3] = 1 - 2*in[0];\n-77 break;\n-78 case 1:\n-79 out[0] = 1 - 2*in[1];\n-80 out[1] = 1 - 2*in[1];\n-81 out[2] = -2 + 2*in[1];\n-82 out[3] = 2*in[1];\n-83 break;\n-84 default:\n-85 DUNE_THROW(RangeError, \"Component out of range.\");\n-86 }\n-87 } else if (totalOrder == 2) {\n-88 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-89 out.resize(_\bs_\bi_\bz_\be());\n-90\n-91 switch (direction) {\n-92 case 0:\n-93 out[0] = out[1] = 2;\n-94 out[2] = out[3] =-2;\n-95 break;\n-96 case 1:\n-97 out[0] = out[1] =-2;\n-98 out[2] = out[3] = 2;\n-99 break;\n-100 default:\n-101 out[0] = out[1] = out[2] = out[3] = 0;\n-102 break;\n-103 }\n-104 } else {\n-105 out[0] = out[1] = out[2] = out[3] = 0;\n-106 }\n-107 }\n-108\n-_\b1_\b1_\b0 unsigned int _\bo_\br_\bd_\be_\br () const\n-111 {\n-112 // must be 2 here since it contains x^2 and x^2\n-113 return 2;\n-114 }\n-115 };\n-116\n-117} //namespace Dune\n-118\n-119#endif // #ifndef DUNE_RANNACHER_TUREK_2D_LOCALBASIS_HH\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_\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_\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:34\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:42\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: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\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannacherturek2dlocalbasis.hh:21\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: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:_\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:60\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: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:_\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:33\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:110\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:45\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_\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:30\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/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: rannachertureklocalbasis.hh File Reference\n+dune-localfunctions: common.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-
    rannachertureklocalbasis.hh File Reference
    \n+
    common.hh File Reference
    \n
    \n
    \n-
    #include "rannacherturek2d/rannacherturek2dlocalbasis.hh"
    \n-#include "rannacherturek3d/rannacherturek3dlocalbasis.hh"
    \n+
    #include <cstddef>
    \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 Classes

    struct  Dune::RannacherTurekLocalBasis< D, R, 2 >
     
    struct  Dune::RannacherTurekLocalBasis< D, R, 3 >
    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,22 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-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+common.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-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+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/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: rannachertureklocalbasis.hh Source File\n+dune-localfunctions: common.hh Source File\n \n \n \n \n \n \n \n@@ -70,60 +70,60 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannachertureklocalbasis.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 (C) 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-
    7
    \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-
    11namespace Dune
    \n-
    12{
    \n-
    13
    \n-
    23 template< class D, class R, unsigned int d >
    \n-\n-
    25
    \n-
    26 template< class D, class R >
    \n-
    \n-
    27 struct RannacherTurekLocalBasis< D, R, 2 >
    \n-
    28 : public RannacherTurek2DLocalBasis< D, R >
    \n-
    29 {};
    \n-
    \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+
    18 template<std::size_t dim, class DF = double>
    \n+
    \n+\n+
    21 using RefElem =
    \n+
    22 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n+
    23 Dim<dim>{}));
    \n+
    24
    \n+
    26 RefElem refelem = referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n+
    27 Dim<dim>{});
    \n+
    28
    \n
    30
    \n-
    31 template< class D, class R >
    \n-
    \n-
    32 struct RannacherTurekLocalBasis< D, R, 3 >
    \n-
    33 : public RannacherTurek3DLocalBasis< D, R >
    \n-
    34 {};
    \n-
    \n-
    35
    \n-
    36} // namespace Dune
    \n-
    37
    \n-
    38#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH
    \n-\n-\n+
    34 std::size_t s = refelem.size(dim-1);
    \n+
    35 };
    \n+
    \n+
    36
    \n+
    37} // namespace Dune
    \n+
    38
    \n+
    39#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition rannacherturek2dlocalbasis.hh:21
    \n-
    Definition rannacherturek3dlocalbasis.hh:21
    \n-
    Rannacher-Turek shape functions.
    Definition rannachertureklocalbasis.hh:24
    \n+
    Common base class for edge elements.
    Definition common.hh:19
    \n+
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:26
    \n+
    decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{})) RefElem
    The type of the referenceElement.
    Definition common.hh:23
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,52 +1,63 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-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+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-11namespace _\bD_\bu_\bn_\be\n-12{\n-13\n-23 template< class D, class R, unsigned int d >\n-_\b2_\b4 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-25\n-26 template< class D, class R >\n-_\b2_\b7 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-28 : 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-29 {};\n+11#include \n+12#include \n+13#include \n+14\n+15namespace _\bD_\bu_\bn_\be {\n+16\n+18 template\n+_\b1_\b9 struct _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn {\n+_\b2_\b1 using _\bR_\be_\bf_\bE_\bl_\be_\bm =\n+22 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),\n+23 Dim{}));\n+24\n+_\b2_\b6 _\bR_\be_\bf_\bE_\bl_\be_\bm _\br_\be_\bf_\be_\bl_\be_\bm = referenceElement(DF{}, GeometryTypes::simplex(dim),\n+27 Dim{});\n+28\n 30\n-31 template< class D, class R >\n-_\b3_\b2 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-33 : 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-34 {};\n-35\n-36} // namespace Dune\n-37\n-38#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALBASIS_HH\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-_\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+_\b3_\b4 std::size_t _\bs = _\br_\be_\bf_\be_\bl_\be_\bm.size(dim-1);\n+35 };\n+36\n+37} // namespace Dune\n+38\n+39#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:_\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:21\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:21\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:24\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:19\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:26\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: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: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/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: rannachertureklocalcoefficients.hh File Reference\n+dune-localfunctions: monomial.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,45 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannachertureklocalcoefficients.hh File Reference
    \n+
    monomial.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <array>
    \n-#include <cassert>
    \n+
    #include <cassert>
    \n #include <cstddef>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \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 \n \n-\n-\n+\n+\n+\n+\n+\n \n

    \n Classes

    struct  Dune::RannacherTurekLocalCoefficients< d >
     layout for Rannacher-Turek elements More...
    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,24 +1,32 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+monomial.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 \n+#include \n+#include \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-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:_\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/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: rannachertureklocalcoefficients.hh Source File\n+dune-localfunctions: monomial.hh Source File\n \n \n \n \n \n \n \n@@ -70,96 +70,223 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannachertureklocalcoefficients.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 (C) 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-
    7
    \n-
    8#include <algorithm>
    \n-
    9#include <array>
    \n-
    10#include <cassert>
    \n-
    11#include <cstddef>
    \n-
    12
    \n-\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-
    15namespace Dune
    \n-
    16{
    \n-
    24 template< unsigned int d >
    \n-
    \n-\n-
    26 {
    \n-
    \n-\n-
    28 {
    \n-
    29 for( std::size_t i = 0; i < 2*d; ++i )
    \n-
    30 localKeys_[ i ] = LocalKey( i, 1, 0 );
    \n-
    31 }
    \n-
    \n-
    32
    \n-
    \n-\n-
    34 {
    \n-
    35 (*this) = other;
    \n-
    36 }
    \n-
    \n-
    37
    \n-
    \n-\n-
    39 {
    \n-
    40 std::copy( other.localKeys_.begin(), other.localKeys_.end(), localKeys_.begin() );
    \n-
    41 return *this;
    \n-
    42 }
    \n-
    \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-
    \n-
    45 std::size_t size () const
    \n-
    46 {
    \n-
    47 return 2*d;
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    \n-
    51 const LocalKey &localKey ( std::size_t i ) const
    \n-
    52 {
    \n-
    53 assert( i < 2*d );
    \n-
    54 return localKeys_[ i ];
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    57 private:
    \n-
    58 std::array< LocalKey, 2*d > localKeys_;
    \n-
    59 };
    \n-
    \n-
    60
    \n-
    61} // namespace Dune
    \n-
    62
    \n-
    63#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH
    \n-\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:23
    \n-
    layout for Rannacher-Turek elements
    Definition rannachertureklocalcoefficients.hh:26
    \n-
    RannacherTurekLocalCoefficients()
    Definition rannachertureklocalcoefficients.hh:27
    \n-
    RannacherTurekLocalCoefficients(const RannacherTurekLocalCoefficients &other)
    Definition rannachertureklocalcoefficients.hh:33
    \n-
    RannacherTurekLocalCoefficients & operator=(const RannacherTurekLocalCoefficients &other)
    Definition rannachertureklocalcoefficients.hh:38
    \n-
    const LocalKey & localKey(std::size_t i) const
    map index i to local key
    Definition rannachertureklocalcoefficients.hh:51
    \n-
    std::size_t size() const
    number of coefficients
    Definition rannachertureklocalcoefficients.hh:45
    \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+
    Constant shape function.
    Definition monomiallocalbasis.hh:201
    \n+
    static constexpr unsigned int size()
    Number of shape functions.
    Definition monomiallocalbasis.hh:216
    \n+
    Layout map for monomial finite elements.
    Definition monomiallocalcoefficients.hh:24
    \n+
    Definition monomiallocalinterpolation.hh:22
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,96 +1,248 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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-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+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-15namespace _\bD_\bu_\bn_\be\n-16{\n-24 template< 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_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-26 {\n-_\b2_\b7 _\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-28 {\n-29 for( std::size_t i = 0; i < 2*d; ++i )\n-30 localKeys_[ i ] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( i, 1, 0 );\n-31 }\n-32\n-_\b3_\b3 _\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-34 {\n-35 (*this) = other;\n-36 }\n-37\n-_\b3_\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 &_\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-39 {\n-40 std::copy( other.localKeys_.begin(), other.localKeys_.end(),\n-localKeys_.begin() );\n-41 return *this;\n-42 }\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-_\b4_\b5 std::size_t _\bs_\bi_\bz_\be () const\n-46 {\n-47 return 2*d;\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 assert( i < 2*d );\n-54 return localKeys_[ i ];\n-55 }\n-56\n-57 private:\n-58 std::array< LocalKey, 2*d > localKeys_;\n-59 };\n-60\n-61} // namespace Dune\n-62\n-63#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALCOEFFICIENTS_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\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+_\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+_\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 _\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:23\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:26\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: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(const RannacherTurekLocalCoefficients &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalcoefficients.hh:33\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: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_\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:51\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:45\n+_\bD_\bu_\bn_\be_\b:_\b:_\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+Constant shape function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalbasis.hh:201\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:216\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+Layout map for monomial finite elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalcoefficients.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\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn monomiallocalinterpolation.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/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: rannachertureklocalinterpolation.hh File Reference\n+dune-localfunctions: coeffmatrix.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannachertureklocalinterpolation.hh File Reference
    \n+
    coeffmatrix.hh File Reference
    \n
    \n
    \n
    #include <cassert>
    \n+#include <iostream>
    \n #include <vector>
    \n #include <dune/common/fvector.hh>
    \n-#include <dune/geometry/referenceelements.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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

    \n Classes

    class  Dune::RannacherTurekLocalInterpolation< D, R, d >
     please doc me More...
    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,25 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-rannachertureklocalinterpolation.hh File Reference\n+coeffmatrix.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_\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/_\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_\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+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/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: rannachertureklocalinterpolation.hh Source File\n+dune-localfunctions: coeffmatrix.hh Source File\n \n \n \n \n \n \n \n@@ -70,89 +70,338 @@\n
    \n \n \n \n \n \n \n
    \n-
    rannachertureklocalinterpolation.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 (C) 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-
    7
    \n-
    8#include <cassert>
    \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
    \n-
    11#include <dune/common/fvector.hh>
    \n-
    12
    \n-
    13#include <dune/geometry/referenceelements.hh>
    \n-
    14
    \n-\n-\n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    20
    \n-
    28 template< class D, class R, unsigned int d >
    \n-
    \n-\n-
    30 {
    \n-\n-
    32 R, 1, FieldVector< R, 1 >,
    \n-
    33 FieldMatrix< R, 1, d > > Traits;
    \n+
    10#include <dune/common/fvector.hh>
    \n+\n+\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 public:
    \n-
    36 template< class F, class C >
    \n-
    \n-
    37 void interpolate ( const F &ff, std::vector< C > &out ) const
    \n-
    38 {
    \n-
    39 typedef typename Traits::DomainType DomainType;
    \n-
    40
    \n-
    41 auto&& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n-
    42
    \n-
    43 // get cubic reference element
    \n-
    44 auto referenceElement = ReferenceElements< D, d >::cube();
    \n-
    45
    \n-
    46 const int size = 2*d;
    \n-
    47 assert( size == referenceElement.size( 1 ) );
    \n-
    48
    \n-
    49 // resize vector
    \n-
    50 out.resize( size );
    \n-
    51
    \n-
    52 // evaluate local function in barycenter of codim 1 subentities
    \n-
    53 for( int i = 0; i < size; ++i )
    \n-
    54 {
    \n-
    55 const DomainType &x = referenceElement.position( i, 1 );
    \n-
    56 out[ i ] = f(x);
    \n-
    57 }
    \n-
    58 }
    \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-
    59
    \n-
    60 };
    \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
    61
    \n-
    62} // namespace Dune
    \n-
    63
    \n-
    64#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH
    \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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    please doc me
    Definition rannachertureklocalinterpolation.hh:30
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition rannachertureklocalinterpolation.hh:37
    \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 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:571
    \n+
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:649
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,86 +1,347 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-7\n-8#include \n+5#ifndef DUNE_COEFFMATRIX_HH\n+6#define DUNE_COEFFMATRIX_HH\n+7#include \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#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\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-20\n-28 template< class D, class R, unsigned int d >\n-_\b2_\b9 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+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+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 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-32 R, 1, FieldVector< R, 1 >,\n-33 FieldMatrix< R, 1, d > > _\bT_\br_\ba_\bi_\bt_\bs;\n+31 res += vec1*vec2;\n+32 }\n+33 };\n 34\n-35 public:\n-36 template< class F, class C >\n-_\b3_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const F &ff, std::vector< C > &out ) const\n-38 {\n-39 typedef typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be DomainType;\n-40\n-41 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-42\n-43 // get cubic reference element\n-44 auto referenceElement = ReferenceElements< D, d >::cube();\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 const int size = 2*d;\n-47 assert( size == referenceElement.size( 1 ) );\n-48\n-49 // resize vector\n-50 out.resize( size );\n-51\n-52 // evaluate local function in barycenter of codim 1 subentities\n-53 for( int i = 0; i < size; ++i )\n-54 {\n-55 const DomainType &x = referenceElement.position( i, 1 );\n-56 out[ i ] = f(x);\n-57 }\n-58 }\n-59\n-60 };\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-62} // namespace Dune\n-63\n-64#endif // #ifndef DUNE_RANNACHER_TUREK_LOCALINTERPOLATION_HH\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_\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:34\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:42\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: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_\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn rannachertureklocalinterpolation.hh:37\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+_\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:571\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:649\n ===============================================================================\n 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: rannacherturek.hh File Reference\n+dune-localfunctions: polynomialbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,29 +65,51 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannacherturek.hh File Reference
    \n+ \n+
    polynomialbasis.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 <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-

    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+Classes

    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+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,16 +1,33 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+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-*\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:_\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/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: rannacherturek.hh Source File\n+dune-localfunctions: polynomialbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,27 +70,481 @@\n \n \n \n \n \n \n \n
    \n-
    rannacherturek.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 (C) 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#ifndef DUNE_POLYNOMIALBASIS_HH
    \n+
    6#define DUNE_POLYNOMIALBASIS_HH
    \n+
    7
    \n+
    8#include <fstream>
    \n+
    9#include <numeric>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12
    \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+
    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 sceme
    \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+
    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:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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,17 +1,538 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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#ifndef DUNE_POLYNOMIALBASIS_HH\n+6#define DUNE_POLYNOMIALBASIS_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+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+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 sceme\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_\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+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\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:34\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:42\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 ===============================================================================\n 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: nedelec.hh File Reference\n+dune-localfunctions: defaultbasisfactory.hh File Reference\n \n \n \n \n \n \n \n@@ -65,25 +65,44 @@\n \n \n \n \n \n \n \n
    \n-
    nedelec.hh File Reference
    \n+ \n+
    defaultbasisfactory.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,12 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+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+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/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: nedelec.hh Source File\n+dune-localfunctions: defaultbasisfactory.hh Source File\n \n \n \n \n \n \n \n@@ -70,38 +70,151 @@\n
    \n \n \n \n \n \n \n
    \n-
    nedelec.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 (C) 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+
    5#ifndef DUNE_DEFAULTBASISFACTORY_HH
    \n+
    6#define DUNE_DEFAULTBASISFACTORY_HH
    \n
    7
    \n-
    8// Nedelec element implementations with run-time order
    \n-
    9// [include them here once they exist]
    \n+
    8#include <fstream>
    \n+
    9#include <dune/common/exceptions.hh>
    \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+\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+
    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,28 +1,188 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_DEFAULTBASISFACTORY_HH\n+6#define DUNE_DEFAULTBASISFACTORY_HH\n 7\n-8// Nedelec element implementations with run-time order\n-9// [include them here once they exist]\n+8#include \n+9#include \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_\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+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:_\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/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: common.hh File Reference\n+dune-localfunctions: monomialbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,60 @@\n \n \n \n \n \n \n \n
    \n \n-
    common.hh File Reference
    \n+
    monomialbasis.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <dune/geometry/dimension.hh>
    \n-#include <dune/geometry/referenceelements.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/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 \n

    \n Classes

    struct  Dune::EdgeS0_5Common< dim, DF >
     Common base class for edge elements. More...
    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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,49 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-common.hh File Reference\n-#include \n-#include \n-#include \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/_\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-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:_\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 ===============================================================================\n 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: common.hh Source File\n+dune-localfunctions: monomialbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,60 +70,1025 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    common.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 (C) 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-
    10
    \n-
    11#include <dune/geometry/dimension.hh>
    \n-
    12#include <dune/geometry/referenceelements.hh>
    \n+
    5#ifndef DUNE_MONOMIALBASIS_HH
    \n+
    6#define DUNE_MONOMIALBASIS_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
    \n-
    15namespace Dune {
    \n-
    16
    \n-
    18 template<std::size_t dim, class DF = double>
    \n-
    \n-\n-
    21 using RefElem =
    \n-
    22 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n-
    23 Dim<dim>{}));
    \n-
    24
    \n-
    26 RefElem refelem = referenceElement(DF{}, GeometryTypes::simplex(dim),
    \n-
    27 Dim<dim>{});
    \n-
    28
    \n-
    30
    \n-
    34 std::size_t s = refelem.size(dim-1);
    \n-
    35 };
    \n-
    \n-
    36
    \n-
    37} // namespace Dune
    \n-
    38
    \n-
    39#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_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 addiional 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 hight...)
    \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-
    Common base class for edge elements.
    Definition common.hh:19
    \n-
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:26
    \n-
    decltype(referenceElement(DF{}, GeometryTypes::simplex(dim), Dim< dim >{})) RefElem
    The type of the referenceElement.
    Definition common.hh:23
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \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:172
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,63 +1,1112 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-10\n-11#include \n-12#include \n+5#ifndef DUNE_MONOMIALBASIS_HH\n+6#define DUNE_MONOMIALBASIS_HH\n+7\n+8#include \n+9\n+10#include \n+11#include \n+12\n 13#include \n-14\n-15namespace _\bD_\bu_\bn_\be {\n-16\n-18 template\n-_\b1_\b9 struct _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn {\n-_\b2_\b1 using _\bR_\be_\bf_\bE_\bl_\be_\bm =\n-22 decltype(referenceElement(DF{}, GeometryTypes::simplex(dim),\n-23 Dim{}));\n-24\n-_\b2_\b6 _\bR_\be_\bf_\bE_\bl_\be_\bm _\br_\be_\bf_\be_\bl_\be_\bm = referenceElement(DF{}, GeometryTypes::simplex(dim),\n-27 Dim{});\n-28\n-30\n-_\b3_\b4 std::size_t _\bs = _\br_\be_\bf_\be_\bl_\be_\bm.size(dim-1);\n-35 };\n-36\n-37} // namespace Dune\n-38\n-39#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COMMON_HH\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 addiional 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 hight...)\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+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\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:_\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:19\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:26\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: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:34\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:172\n ===============================================================================\n 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: edges0.5.hh File Reference\n+dune-localfunctions: dglocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    edges0.5.hh File Reference
    \n+
    dglocalcoefficients.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 <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-\n+\n+\n \n

    \n Classes

    class  Dune::EdgeS0_5FiniteElement< Geometry, RF >
     FiniteElement for lowest order edge elements on simplices. More...
    class  Dune::DGLocalCoefficients
     A class providing local coefficients for dg spaces. More...
     
    struct  Dune::EdgeS0_5FiniteElement< Geometry, RF >::Traits
     
    struct  Dune::EdgeS0_5FiniteElementFactory< Geometry, RF >
     Factory for EdgeS0_5FiniteElement objects. 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,28 +1,25 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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+ 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:_\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+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/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: edges0.5.hh Source File\n+dune-localfunctions: dglocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,132 +70,117 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    edges0.5.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 (C) 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+
    5#ifndef DUNE_DGLOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_DGLOCALCOEFFICIENTS_HH
    \n+
    7
    \n+
    8#include <cassert>
    \n+
    9#include <vector>
    \n
    10
    \n-\n-\n-\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+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \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+
    \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+
    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 EdgeS0_5FiniteElement(const Geometry& geo,
    \n-
    66 const VertexOrder& vertexOrder) :
    \n-
    67 basis_(geo, vertexOrder), interpolation_(geo, vertexOrder)
    \n-
    68 { }
    \n-
    \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-
    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+
    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-
    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:30
    \n-
    Interpolation for lowest order edge elements on simplices.
    Definition whitney/edges0.5/interpolation.hh:33
    \n-\n-\n-\n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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,151 +1,120 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_DGLOCALCOEFFICIENTS_HH\n+6#define DUNE_DGLOCALCOEFFICIENTS_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/_\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-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-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-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+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+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+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:_\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:30\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+_\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: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\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/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: pk3d.hh File Reference\n+dune-localfunctions: l2interpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,47 @@\n \n \n \n \n \n \n \n
    \n \n-
    pk3d.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    l2interpolation.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n+
    #include <dune/common/concept.hh>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n+#include <dune/localfunctions/utility/lfematrix.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::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-\n-\n-\n-\n

    \n-Typedefs

    template<class D , class R , unsigned int k>
    using Dune::Pk3DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 3, k >
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,21 +1,30 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-pk3d.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/_\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+ * _\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+l2interpolation.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_\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/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bf_\be_\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:_\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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n- 3, k >\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: pk3d.hh Source File\n+dune-localfunctions: l2interpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,280 @@\n
    \n \n \n \n \n \n \n
    \n-
    pk3d.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 (C) 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_Pk3DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_Pk3DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_L2INTERPOLATION_HH
    \n+
    6#define DUNE_L2INTERPOLATION_HH
    \n
    7
    \n-\n+
    8#include <dune/common/concept.hh>
    \n
    9
    \n-
    10#warning This header is deprecated
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+\n+\n
    14
    \n-
    19 template<class D, class R, unsigned int k>
    \n-\n-
    21 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n-\n-
    23
    \n-
    24}
    \n-
    25
    \n-
    26#endif
    \n-\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, std::enable_if_t<models<Impl::FunctionWithEvaluate<typename Function::DomainType, typename Function::RangeType>, Function>(), int> = 0 >
    \n+
    \n+
    48 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n+
    49 {
    \n+
    50 typedef typename Quadrature::iterator Iterator;
    \n+
    51 typedef FieldVector< DofField, Basis::dimRange > RangeVector;
    \n+
    52
    \n+
    53 const unsigned int size = basis().size();
    \n+
    54 static std::vector< RangeVector > basisValues( size );
    \n+
    55
    \n+
    56 coefficients.resize( size );
    \n+
    57 basisValues.resize( size );
    \n+
    58 for( unsigned int i = 0; i < size; ++i )
    \n+
    59 coefficients[ i ] = Zero< DofField >();
    \n+
    60
    \n+
    61 const Iterator end = quadrature().end();
    \n+
    62 for( Iterator it = quadrature().begin(); it != end; ++it )
    \n+
    63 {
    \n+
    64 basis().evaluate( it->position(), basisValues );
    \n+
    65 typename Function::RangeType val;
    \n+
    66 function.evaluate( field_cast<typename Function::DomainType::field_type>(it->position()), val );
    \n+
    67 RangeVector factor = field_cast< DofField >( val );
    \n+
    68 factor *= field_cast< DofField >( it->weight() );
    \n+
    69 for( unsigned int i = 0; i < size; ++i )
    \n+
    70 coefficients[ i ] += factor * basisValues[ i ];
    \n+
    71 }
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    75 template< class Function, class DofField, std::enable_if_t<models<Impl::FunctionWithCallOperator<typename Quadrature::value_type::Vector>, Function>(), int> = 0 >
    \n+
    \n+
    76 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n+
    77 {
    \n+
    78 typedef FieldVector< DofField, Basis::dimRange > RangeVector;
    \n+
    79
    \n+
    80 const unsigned int size = basis().size();
    \n+
    81 static std::vector< RangeVector > basisValues( size );
    \n+
    82
    \n+
    83 coefficients.resize( size );
    \n+
    84 basisValues.resize( size );
    \n+
    85 for( unsigned int i = 0; i < size; ++i )
    \n+
    86 coefficients[ i ] = Zero< DofField >();
    \n+
    87
    \n+
    88 for (auto&& qp : quadrature())
    \n+
    89 {
    \n+
    90 basis().evaluate( qp.position(), basisValues );
    \n+
    91 auto val = function( qp.position() );
    \n+
    92 RangeVector factor = field_cast< DofField >( val );
    \n+
    93 factor *= field_cast< DofField >( qp.weight() );
    \n+
    94 for( unsigned int i = 0; i < size; ++i )
    \n+
    95 coefficients[ i ] += factor * basisValues[ i ];
    \n+
    96 }
    \n+
    97 }
    \n+
    \n+
    98
    \n+
    \n+
    99 const Basis &basis () const
    \n+
    100 {
    \n+
    101 return basis_;
    \n+
    102 }
    \n+
    \n+
    103
    \n+
    \n+
    104 const Quadrature &quadrature () const
    \n+
    105 {
    \n+
    106 return quadrature_;
    \n+
    107 }
    \n+
    \n+
    108
    \n+
    109 protected:
    \n+
    \n+\n+
    111 : basis_( basis ),
    \n+\n+
    113 {}
    \n+
    \n+
    114
    \n+
    115 const Basis &basis_;
    \n+\n+
    117 };
    \n+
    \n+
    118
    \n+
    119 template< class B, class Q >
    \n+
    \n+
    120 struct LocalL2Interpolation<B,Q,true>
    \n+
    121 : public LocalL2InterpolationBase<B,Q>
    \n+
    122 {
    \n+\n+
    124 template< class BasisFactory, bool onb >
    \n+\n+
    126 using typename Base::Basis;
    \n+
    127 using typename Base::Quadrature;
    \n+
    128 private:
    \n+
    129 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n+
    130 : Base(basis,quadrature)
    \n+
    131 {}
    \n+
    132 };
    \n+
    \n+
    133 template< class B, class Q >
    \n+
    \n+
    134 struct LocalL2Interpolation<B,Q,false>
    \n+
    135 : public LocalL2InterpolationBase<B,Q>
    \n+
    136 {
    \n+\n+
    138 template< class BasisFactory, bool onb >
    \n+\n+
    140 using typename Base::Basis;
    \n+
    141 using typename Base::Quadrature;
    \n+
    142 template< class Function, class DofField >
    \n+
    \n+
    143 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n+
    144 {
    \n+
    145 const unsigned size = Base::basis().size();
    \n+
    146 Base::interpolate(function,val_);
    \n+
    147 coefficients.resize( size );
    \n+
    148 for (unsigned int i=0; i<size; ++i)
    \n+
    149 {
    \n+
    150 coefficients[i] = 0;
    \n+
    151 for (unsigned int j=0; j<size; ++j)
    \n+
    152 {
    \n+
    153 coefficients[i] += field_cast<DofField>(massMatrix_(i,j)*val_[j]);
    \n+
    154 }
    \n+
    155 }
    \n+
    156 }
    \n+
    \n+
    157 private:
    \n+
    158 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n+
    159 : Base(basis,quadrature),
    \n+
    160 val_(basis.size()),
    \n+
    161 massMatrix_()
    \n+
    162 {
    \n+
    163 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n+
    164 typedef typename Base::Quadrature::iterator Iterator;
    \n+
    165 const unsigned size = basis.size();
    \n+
    166 std::vector< RangeVector > basisValues( size );
    \n+
    167
    \n+
    168 massMatrix_.resize( size,size );
    \n+
    169 for (unsigned int i=0; i<size; ++i)
    \n+
    170 for (unsigned int j=0; j<size; ++j)
    \n+
    171 massMatrix_(i,j) = 0;
    \n+
    172 const Iterator end = Base::quadrature().end();
    \n+
    173 for( Iterator it = Base::quadrature().begin(); it != end; ++it )
    \n+
    174 {
    \n+
    175 Base::basis().evaluate( it->position(), basisValues );
    \n+
    176 for (unsigned int i=0; i<size; ++i)
    \n+
    177 for (unsigned int j=0; j<size; ++j)
    \n+
    178 massMatrix_(i,j) += (basisValues[i]*basisValues[j])*it->weight();
    \n+
    179 }
    \n+
    180 if ( !massMatrix_.invert() )
    \n+
    181 {
    \n+
    182 DUNE_THROW(MathError, "Mass matrix singular in LocalL2Interpolation");
    \n+
    183 }
    \n+
    184
    \n+
    185 }
    \n+
    186 typedef typename Base::Basis::StorageField Field;
    \n+
    187 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n+
    188 typedef LFEMatrix<Field> MassMatrix;
    \n+
    189 mutable std::vector<Field> val_;
    \n+
    190 MassMatrix massMatrix_;
    \n+
    191 };
    \n+
    \n+
    192
    \n+
    197 template< class BasisFactory, bool onb >
    \n+
    \n+\n+
    199 {
    \n+
    200 static const unsigned int dimension = BasisFactory::dimension;
    \n+
    201 typedef typename BasisFactory::Key Key;
    \n+
    202 typedef typename BasisFactory::Object Basis;
    \n+
    203 typedef double Field;
    \n+
    204 typedef QuadratureRule<Field,dimension> Quadrature;
    \n+
    205 typedef QuadratureRules<Field,dimension> QuadratureProvider;
    \n+\n+\n+
    208
    \n+
    209 template< GeometryType::Id geometryId >
    \n+
    \n+
    210 static Object *create ( const Key &key )
    \n+
    211 {
    \n+
    212 constexpr Dune::GeometryType geometry = geometryId;
    \n+
    213 const Basis *basis = BasisFactory::template create< geometry >( key );
    \n+
    214 const Quadrature & quadrature = QuadratureProvider::rule(geometry, 2*basis->order()+1);
    \n+
    215 return new Object( *basis, quadrature );
    \n+
    216 }
    \n+
    \n+
    \n+
    217 static void release ( Object *object )
    \n+
    218 {
    \n+
    219 const Basis &basis = object->basis();
    \n+
    220 BasisFactory::release( &basis );
    \n+
    221 delete object;
    \n+
    222 }
    \n+
    \n+
    223 };
    \n+
    \n+
    224
    \n+
    225}
    \n+
    226
    \n+
    227#endif // #ifndef DUNE_L2INTERPOLATION_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \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:110
    \n+
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Interpolate a function that implements void evaluate(Domain, Range&)
    Definition l2interpolation.hh:48
    \n+
    const Basis & basis() const
    Definition l2interpolation.hh:99
    \n+
    const Quadrature & quadrature_
    Definition l2interpolation.hh:116
    \n+
    const Basis & basis_
    Definition l2interpolation.hh:115
    \n+
    static const unsigned int dimension
    Definition l2interpolation.hh:44
    \n+
    const Quadrature & quadrature() const
    Definition l2interpolation.hh:104
    \n+
    Q Quadrature
    Definition l2interpolation.hh:42
    \n+
    B Basis
    Definition l2interpolation.hh:41
    \n+
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:123
    \n+
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Definition l2interpolation.hh:143
    \n+
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:137
    \n+
    A factory class for the local l2 interpolations taking a basis factory.
    Definition l2interpolation.hh:199
    \n+
    static const unsigned int dimension
    Definition l2interpolation.hh:200
    \n+
    static void release(Object *object)
    Definition l2interpolation.hh:217
    \n+
    BasisFactory::Object Basis
    Definition l2interpolation.hh:202
    \n+
    double Field
    Definition l2interpolation.hh:203
    \n+
    QuadratureRules< Field, dimension > QuadratureProvider
    Definition l2interpolation.hh:205
    \n+
    QuadratureRule< Field, dimension > Quadrature
    Definition l2interpolation.hh:204
    \n+
    static Object * create(const Key &key)
    Definition l2interpolation.hh:210
    \n+
    BasisFactory::Key Key
    Definition l2interpolation.hh:201
    \n+
    const LocalInterpolation Object
    Definition l2interpolation.hh:207
    \n+
    LocalL2Interpolation< Basis, Quadrature, onb > LocalInterpolation
    Definition l2interpolation.hh:206
    \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,314 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-pk3d.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 (C) 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_Pk3DLOCALFINITEELEMENT_HH\n-6#define DUNE_Pk3DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_L2INTERPOLATION_HH\n+6#define DUNE_L2INTERPOLATION_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/_\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+8#include \n 9\n-10#warning This header is deprecated\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/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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/_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n 14\n-19 template\n-_\b2_\b0 using _\bP_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-21 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n-22 = _\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,_\b3_\b,_\bk_\b>;\n-23\n-24}\n-25\n-26#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\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, std::enable_if_t, Function>(), int> = 0 >\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 typename Quadrature::iterator Iterator;\n+51 typedef FieldVector< DofField, Basis::dimRange > RangeVector;\n+52\n+53 const unsigned int size = _\bb_\ba_\bs_\bi_\bs().size();\n+54 static std::vector< RangeVector > basisValues( size );\n+55\n+56 coefficients.resize( size );\n+57 basisValues.resize( size );\n+58 for( unsigned int i = 0; i < size; ++i )\n+59 coefficients[ i ] = _\bZ_\be_\br_\bo_\b<_\b _\bD_\bo_\bf_\bF_\bi_\be_\bl_\bd_\b _\b>();\n+60\n+61 const Iterator end = _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be().end();\n+62 for( Iterator it = _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be().begin(); it != end; ++it )\n+63 {\n+64 _\bb_\ba_\bs_\bi_\bs().evaluate( it->position(), basisValues );\n+65 typename Function::RangeType val;\n+66 function.evaluate( field_cast(it-\n+>position()), val );\n+67 RangeVector factor = field_cast< DofField >( val );\n+68 factor *= field_cast< DofField >( it->weight() );\n+69 for( unsigned int i = 0; i < size; ++i )\n+70 coefficients[ i ] += factor * basisValues[ i ];\n+71 }\n+72 }\n+73\n+75 template< class Function, class DofField, std::enable_if_t, Function>(),\n+int> = 0 >\n+_\b7_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n+&coefficients ) const\n+77 {\n+78 typedef FieldVector< DofField, Basis::dimRange > RangeVector;\n+79\n+80 const unsigned int size = _\bb_\ba_\bs_\bi_\bs().size();\n+81 static std::vector< RangeVector > basisValues( size );\n+82\n+83 coefficients.resize( size );\n+84 basisValues.resize( size );\n+85 for( unsigned int i = 0; i < size; ++i )\n+86 coefficients[ i ] = _\bZ_\be_\br_\bo_\b<_\b _\bD_\bo_\bf_\bF_\bi_\be_\bl_\bd_\b _\b>();\n+87\n+88 for (auto&& qp : _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be())\n+89 {\n+90 _\bb_\ba_\bs_\bi_\bs().evaluate( qp.position(), basisValues );\n+91 auto val = function( qp.position() );\n+92 RangeVector factor = field_cast< DofField >( val );\n+93 factor *= field_cast< DofField >( qp.weight() );\n+94 for( unsigned int i = 0; i < size; ++i )\n+95 coefficients[ i ] += factor * basisValues[ i ];\n+96 }\n+97 }\n+98\n+_\b9_\b9 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs () const\n+100 {\n+101 return _\bb_\ba_\bs_\bi_\bs_\b_;\n+102 }\n+103\n+_\b1_\b0_\b4 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be () const\n+105 {\n+106 return _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n+107 }\n+108\n+109 protected:\n+_\b1_\b1_\b0 _\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+111 : _\bb_\ba_\bs_\bi_\bs_\b_( _\bb_\ba_\bs_\bi_\bs ),\n+112 _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_( _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be )\n+113 {}\n+114\n+_\b1_\b1_\b5 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n+_\b1_\b1_\b6 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n+117 };\n+118\n+119 template< class B, class Q >\n+_\b1_\b2_\b0 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+121 : 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+122 {\n+_\b1_\b2_\b3 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+124 template< class BasisFactory, bool onb >\n+_\b1_\b2_\b5 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+126 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n+127 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n+128 private:\n+129 _\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+130 : _\bB_\ba_\bs_\be(basis,quadrature)\n+131 {}\n+132 };\n+133 template< class B, class Q >\n+_\b1_\b3_\b4 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+135 : 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+136 {\n+_\b1_\b3_\b7 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+138 template< class BasisFactory, bool onb >\n+_\b1_\b3_\b9 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+140 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n+141 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n+142 template< class Function, class DofField >\n+_\b1_\b4_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n+&coefficients ) const\n+144 {\n+145 const unsigned size = Base::basis().size();\n+146 Base::interpolate(function,val_);\n+147 coefficients.resize( size );\n+148 for (unsigned int i=0; i(massMatrix_(i,j)*val_[j]);\n+154 }\n+155 }\n+156 }\n+157 private:\n+158 _\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+159 : Base(basis,quadrature),\n+160 val_(basis.size()),\n+161 massMatrix_()\n+162 {\n+163 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n+164 typedef typename Base::Quadrature::iterator Iterator;\n+165 const unsigned size = basis.size();\n+166 std::vector< RangeVector > basisValues( size );\n+167\n+168 massMatrix_.resize( size,size );\n+169 for (unsigned int i=0; iposition(), basisValues );\n+176 for (unsigned int i=0; iweight();\n+179 }\n+180 if ( !massMatrix_.invert() )\n+181 {\n+182 DUNE_THROW(MathError, \"Mass matrix singular in LocalL2Interpolation\");\n+183 }\n+184\n+185 }\n+186 typedef typename Base::Basis::StorageField Field;\n+187 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n+188 typedef LFEMatrix MassMatrix;\n+189 mutable std::vector val_;\n+190 MassMatrix massMatrix_;\n+191 };\n+192\n+197 template< class BasisFactory, bool onb >\n+_\b1_\b9_\b8 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+199 {\n+_\b2_\b0_\b0 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = BasisFactory::dimension;\n+_\b2_\b0_\b1 typedef typename BasisFactory::Key _\bK_\be_\by;\n+_\b2_\b0_\b2 typedef typename BasisFactory::Object _\bB_\ba_\bs_\bi_\bs;\n+_\b2_\b0_\b3 typedef double _\bF_\bi_\be_\bl_\bd;\n+_\b2_\b0_\b4 typedef QuadratureRule _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n+_\b2_\b0_\b5 typedef QuadratureRules _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n+_\b2_\b0_\b6 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+_\b2_\b0_\b7 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+208\n+209 template< GeometryType::Id geometryId >\n+_\b2_\b1_\b0 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n+211 {\n+212 constexpr Dune::GeometryType geometry = geometryId;\n+213 const _\bB_\ba_\bs_\bi_\bs *basis = BasisFactory::template create< geometry >( key );\n+214 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be & quadrature = QuadratureProvider::rule(geometry, 2*basis-\n+>order()+1);\n+215 return new _\bO_\bb_\bj_\be_\bc_\bt( *basis, quadrature );\n+216 }\n+_\b2_\b1_\b7 static void _\br_\be_\bl_\be_\ba_\bs_\be ( _\bO_\bb_\bj_\be_\bc_\bt *object )\n+218 {\n+219 const _\bB_\ba_\bs_\bi_\bs &basis = object->basis();\n+220 BasisFactory::release( &basis );\n+221 delete object;\n+222 }\n+223 };\n+224\n+225}\n+226\n+227#endif // #ifndef DUNE_L2INTERPOLATION_HH\n+_\bl_\bf_\be_\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_\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:838\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:110\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 void evaluate(Domain, Range&)\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\n+const Basis & basis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:99\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:116\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: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_\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:104\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:123\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:143\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:137\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:199\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:200\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:217\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:202\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:203\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:205\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:204\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:210\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:201\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:207\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:206\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/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: equidistantpoints.hh File Reference\n+dune-localfunctions: basisprint.hh File Reference\n \n \n \n \n \n \n \n@@ -65,57 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    equidistantpoints.hh File Reference
    \n+
    basisprint.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+\n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::EquidistantPointSet< F, dim >
     
    \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 Functions

    std::size_t Dune::numLagrangePoints (const GeometryType &gt, std::size_t order)
     
    std::size_t Dune::numLagrangePoints (unsigned int topologyId, unsigned int dim, 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)
     
    template<class ct , unsigned int cdim>
    static unsigned int Dune::equidistantLagrangePoints (unsigned int topologyId, unsigned int dim, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points)
     
    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,42 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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:_\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- 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 (unsigned int topologyId, unsigned\n- int dim, std::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-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 (unsigned int topologyId,\n- unsigned int dim, unsigned int codim, std::size_t order,\n- unsigned int *count, _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt< ct, cdim > *points)\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/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: equidistantpoints.hh Source File\n+dune-localfunctions: basisprint.hh Source File\n \n \n \n \n \n \n \n@@ -70,276 +70,105 @@\n
    \n \n \n \n \n \n \n
    \n-
    equidistantpoints.hh
    \n+
    basisprint.hh
    \n
    \n
    \n-Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright (C) 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 <algorithm>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/geometry/referenceelements.hh>
    \n-
    12#include <dune/geometry/type.hh>
    \n-
    13
    \n-\n-\n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    20 // numLagrangePoints
    \n-
    21 // -----------------
    \n-
    22
    \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 (C) 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 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 [[deprecated("Use numLagrangePoints(const GeometryType& gt, std::size_t order ) instead.")]]
    \n-
    \n-
    44 inline std::size_t numLagrangePoints ( unsigned int topologyId, unsigned int dim, std::size_t order )
    \n-
    45 {
    \n-
    46 return numLagrangePoints ( GeometryType(topologyId, dim), order);
    \n-
    47 }
    \n-
    \n-
    48
    \n-
    49
    \n-
    50
    \n-
    51 // equidistantLagrangePoints
    \n-
    52 // -------------------------
    \n-
    53
    \n-
    54 template< class ct, unsigned int cdim >
    \n-
    \n-
    55 inline static unsigned int equidistantLagrangePoints ( const GeometryType& gt, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points )
    \n-
    56 {
    \n-
    57 const unsigned int dim = gt.dim();
    \n-
    58 assert( (0 <= codim) && (codim <= dim) && (dim <= cdim) );
    \n-
    59
    \n-
    60 if( dim > 0 )
    \n-
    61 {
    \n-
    62 const GeometryType baseGeometryType = Impl::getBase( gt );
    \n-
    63 const unsigned int numBaseN = (codim < dim ? Geo::Impl::size( baseGeometryType.id(), baseGeometryType.dim(), codim ) : 0);
    \n-
    64 const unsigned int numBaseM = (codim > 0 ? Geo::Impl::size( baseGeometryType.id(), baseGeometryType.dim(), codim-1 ) : 0);
    \n-
    65
    \n-
    66 if( gt.isPrismatic() )
    \n-
    67 {
    \n-
    68 unsigned int size = 0;
    \n-
    69 if( codim < dim )
    \n-
    70 {
    \n-
    71 for( unsigned int i = 1; i < order; ++i )
    \n-
    72 {
    \n-
    73 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim, order, count, points );
    \n-
    74 for( unsigned int j = 0; j < n; ++j )
    \n-
    75 {
    \n-
    76 LocalKey &key = points->localKey_;
    \n-
    77 key = LocalKey( key.subEntity(), codim, key.index() );
    \n-
    78 points->point_[ dim-1 ] = ct( i ) / ct( order );
    \n-
    79 ++points;
    \n-
    80 }
    \n-
    81 size += n;
    \n-
    82 }
    \n-
    83 }
    \n-
    84
    \n-
    85 if( codim > 0 )
    \n-
    86 {
    \n-
    87 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim-1, order, count+numBaseN, points );
    \n-
    88 for( unsigned int j = 0; j < n; ++j )
    \n-
    89 {
    \n-
    90 LocalKey &key = points[ j ].localKey_;
    \n-
    91 key = LocalKey( key.subEntity() + numBaseN, codim, key.index() );
    \n-
    92
    \n-
    93 points[ j + n ].point_ = points[ j ].point_;
    \n-
    94 points[ j + n ].point_[ dim-1 ] = ct( 1 );
    \n-
    95 points[ j + n ].localKey_ = LocalKey( key.subEntity() + numBaseM, codim, key.index() );
    \n-
    96 ++count[ key.subEntity() + numBaseM ];
    \n-
    97 }
    \n-
    98 size += 2*n;
    \n-
    99 }
    \n-
    100
    \n-
    101 return size;
    \n-
    102 }
    \n-
    103 else
    \n-
    104 {
    \n-
    105 unsigned int size = (codim > 0 ? equidistantLagrangePoints( baseGeometryType, codim-1, order, count, points ) : 0);
    \n-
    106 LagrangePoint< ct, cdim > *const end = points + size;
    \n-
    107 for( ; points != end; ++points )
    \n-
    108 points->localKey_ = LocalKey( points->localKey_.subEntity(), codim, points->localKey_.index() );
    \n-
    109
    \n-
    110 if( codim < dim )
    \n-
    111 {
    \n-
    112 for( unsigned int i = order-1; i > 0; --i )
    \n-
    113 {
    \n-
    114 const unsigned int n = equidistantLagrangePoints( baseGeometryType, codim, i, count+numBaseM, points );
    \n-
    115 LagrangePoint< ct, cdim > *const end = points + n;
    \n-
    116 for( ; points != end; ++points )
    \n-
    117 {
    \n-
    118 points->localKey_ = LocalKey( points->localKey_.subEntity()+numBaseM, codim, points->localKey_.index() );
    \n-
    119 for( unsigned int j = 0; j < dim-1; ++j )
    \n-
    120 points->point_[ j ] *= ct( i ) / ct( order );
    \n-
    121 points->point_[ dim-1 ] = ct( order - i ) / ct( order );
    \n-
    122 }
    \n-
    123 size += n;
    \n-
    124 }
    \n-
    125 }
    \n-
    126 else
    \n-
    127 {
    \n-
    128 points->localKey_ = LocalKey( numBaseM, dim, count[ numBaseM ]++ );
    \n-
    129 points->point_ = 0;
    \n-
    130 points->point_[ dim-1 ] = ct( 1 );
    \n-
    131 ++size;
    \n-
    132 }
    \n-
    133
    \n-
    134 return size;
    \n-
    135 }
    \n-
    136 }
    \n-
    137 else
    \n-
    138 {
    \n-
    139 points->localKey_ = LocalKey( 0, 0, count[ 0 ]++ );
    \n-
    140 points->point_ = 0;
    \n-
    141 return 1;
    \n-
    142 }
    \n-
    143 }
    \n-
    \n-
    144
    \n-
    145 template< class ct, unsigned int cdim >
    \n-
    146 [[deprecated("Use equidistantLagrangePoints ( GeometryType gt, ... ) instead.")]]
    \n-
    \n-
    147 inline static unsigned int equidistantLagrangePoints ( unsigned int topologyId, unsigned int dim, unsigned int codim, std::size_t order, unsigned int *count, LagrangePoint< ct, cdim > *points )
    \n-
    148 {
    \n-
    149 return equidistantLagrangePoints ( GeometryType(topologyId, dim), codim, order, *count, *points );
    \n-
    150 }
    \n-
    \n-
    151
    \n-
    152
    \n-
    153
    \n-
    154 // EquidistantPointSet
    \n-
    155 // -------------------
    \n-
    156
    \n-
    157 template< class F, unsigned int dim >
    \n-
    \n-\n-
    159 : public EmptyPointSet< F, dim >
    \n-
    160 {
    \n-\n-
    162
    \n-
    163 public:
    \n-
    164 static const unsigned int dimension = dim;
    \n-
    165
    \n-
    166 using Base::order;
    \n-
    167
    \n-
    168 EquidistantPointSet ( std::size_t order ) : Base( order ) {}
    \n-
    169
    \n-
    \n-
    170 void build ( GeometryType gt )
    \n-
    171 {
    \n-
    172 assert( gt.dim() == dimension );
    \n-
    173 points_.resize( numLagrangePoints( gt, order() ) );
    \n-
    174
    \n-
    175 typename Base::LagrangePoint *p = points_.data();
    \n-
    176 std::vector< unsigned int > count;
    \n-
    177 for( unsigned int mydim = 0; mydim <= dimension; ++mydim )
    \n-
    178 {
    \n-
    179 count.resize( Geo::Impl::size( gt.id(), dimension, dimension-mydim ) );
    \n-
    180 std::fill( count.begin(), count.end(), 0u );
    \n-
    181 p += equidistantLagrangePoints( gt, dimension-mydim, order(), count.data(), p );
    \n-
    182 }
    \n-
    183 const auto &refElement = referenceElement<F,dimension>(gt);
    \n-
    184 F weight = refElement.volume()/F(double(points_.size()));
    \n-
    185 for (auto &p : points_)
    \n-
    186 p.weight_ = weight;
    \n-
    187 }
    \n-
    \n-
    188
    \n-
    189 template< GeometryType::Id geometryId >
    \n-
    \n-
    190 bool build ()
    \n-
    191 {
    \n-
    192 build( GeometryType( geometryId ) );
    \n-
    193 return true;
    \n-
    194 }
    \n-
    \n-
    195
    \n-
    \n-
    196 bool buildCube ()
    \n-
    197 {
    \n-
    198 return build< GeometryTypes::cube(dim) > ();
    \n-
    199 }
    \n-
    \n-
    200
    \n-
    201 static bool supports ( GeometryType, std::size_t /*order*/ ) { return true; }
    \n-
    202 template< GeometryType::Id geometryId>
    \n-
    \n-
    203 static bool supports ( std::size_t order ) {
    \n-
    204 return supports( GeometryType( geometryId ), order );
    \n-
    205 }
    \n-
    \n-
    206
    \n-
    207 private:
    \n-
    208 using Base::points_;
    \n-
    209 };
    \n-
    \n-
    210
    \n-
    211} // namespace Dune
    \n-
    212
    \n-
    213#endif // #ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_EQUIDISTANTPOINTS_HH
    \n-\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
    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:55
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    unsigned int index() const
    Return offset within subentity.
    Definition localkey.hh:68
    \n-
    unsigned int subEntity() const
    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:160
    \n-
    std::size_t order() const
    Definition emptypoints.hh:95
    \n-
    bool build()
    Definition equidistantpoints.hh:190
    \n-
    static bool supports(std::size_t order)
    Definition equidistantpoints.hh:203
    \n-
    static const unsigned int dimension
    Definition equidistantpoints.hh:164
    \n-
    static bool supports(GeometryType, std::size_t)
    Definition equidistantpoints.hh:201
    \n-
    void build(GeometryType gt)
    Definition equidistantpoints.hh:170
    \n-
    bool buildCube()
    Definition equidistantpoints.hh:196
    \n-
    EquidistantPointSet(std::size_t order)
    Definition equidistantpoints.hh:168
    \n+
    void basisPrint(std::ostream &out, typename BasisFactory::Object &basis)
    Definition basisprint.hh:23
    \n+
    Definition multiindex.hh:37
    \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,313 +1,103 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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// SPDX-FileCopyrightText: Copyright (C) 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 (C) 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-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/_\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 [[deprecated(\"Use numLagrangePoints(const GeometryType& gt, std::size_t\n-order ) instead.\")]]\n-_\b4_\b4 inline std::size_t _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs ( unsigned int topologyId, unsigned int\n-dim, std::size_t order )\n-45 {\n-46 return _\bn_\bu_\bm_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs ( GeometryType(topologyId, dim), order);\n-47 }\n-48\n-49\n-50\n-51 // equidistantLagrangePoints\n-52 // -------------------------\n-53\n-54 template< class ct, unsigned int cdim >\n-_\b5_\b5 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-56 {\n-57 const unsigned int dim = gt.dim();\n-58 assert( (0 <= codim) && (codim <= dim) && (dim <= cdim) );\n-59\n-60 if( dim > 0 )\n-61 {\n-62 const GeometryType baseGeometryType = Impl::getBase( gt );\n-63 const unsigned int numBaseN = (codim < dim ? Geo::Impl::size\n-( baseGeometryType.id(), baseGeometryType.dim(), codim ) : 0);\n-64 const unsigned int numBaseM = (codim > 0 ? Geo::Impl::size\n-( baseGeometryType.id(), baseGeometryType.dim(), codim-1 ) : 0);\n-65\n-66 if( gt.isPrismatic() )\n-67 {\n-68 unsigned int size = 0;\n-69 if( codim < dim )\n-70 {\n-71 for( unsigned int i = 1; i < order; ++i )\n-72 {\n-73 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-74 for( unsigned int j = 0; j < n; ++j )\n-75 {\n-76 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &key = points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n-77 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-78 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( i ) / ct( order );\n-79 ++points;\n-80 }\n-81 size += n;\n-82 }\n-83 }\n-84\n-85 if( codim > 0 )\n-86 {\n-87 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-88 for( unsigned int j = 0; j < n; ++j )\n-89 {\n-90 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &key = points[ j ]._\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_;\n-91 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-92\n-93 points[ j + n ]._\bp_\bo_\bi_\bn_\bt_\b_ = points[ j ]._\bp_\bo_\bi_\bn_\bt_\b_;\n-94 points[ j + n ]._\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( 1 );\n-95 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-96 ++count[ key._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by() + numBaseM ];\n-97 }\n-98 size += 2*n;\n-99 }\n-100\n-101 return size;\n-102 }\n-103 else\n-104 {\n-105 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-106 _\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-107 for( ; points != end; ++points )\n-108 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-109\n-110 if( codim < dim )\n-111 {\n-112 for( unsigned int i = order-1; i > 0; --i )\n-113 {\n-114 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-115 _\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-116 for( ; points != end; ++points )\n-117 {\n-118 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-119 for( unsigned int j = 0; j < dim-1; ++j )\n-120 points->_\bp_\bo_\bi_\bn_\bt_\b_[ j ] *= ct( i ) / ct( order );\n-121 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( order - i ) / ct( order );\n-122 }\n-123 size += n;\n-124 }\n-125 }\n-126 else\n-127 {\n-128 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( numBaseM, dim, count[ numBaseM ]++ );\n-129 points->_\bp_\bo_\bi_\bn_\bt_\b_ = 0;\n-130 points->_\bp_\bo_\bi_\bn_\bt_\b_[ dim-1 ] = ct( 1 );\n-131 ++size;\n-132 }\n-133\n-134 return size;\n-135 }\n-136 }\n-137 else\n-138 {\n-139 points->_\bl_\bo_\bc_\ba_\bl_\bK_\be_\by_\b_ = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by( 0, 0, count[ 0 ]++ );\n-140 points->_\bp_\bo_\bi_\bn_\bt_\b_ = 0;\n-141 return 1;\n-142 }\n-143 }\n-144\n-145 template< class ct, unsigned int cdim >\n-146 [[deprecated(\"Use equidistantLagrangePoints ( GeometryType gt, ... )\n-instead.\")]]\n-_\b1_\b4_\b7 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 ( unsigned int\n-topologyId, unsigned int dim, unsigned int codim, std::size_t order, unsigned\n-int *count, _\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> *points )\n-148 {\n-149 return _\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 ( GeometryType(topologyId, dim), codim,\n-order, *count, *points );\n-150 }\n-151\n-152\n-153\n-154 // EquidistantPointSet\n-155 // -------------------\n-156\n-157 template< class F, unsigned int dim >\n-_\b1_\b5_\b8 class _\bE_\bq_\bu_\bi_\bd_\bi_\bs_\bt_\ba_\bn_\bt_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt\n-159 : public _\bE_\bm_\bp_\bt_\by_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt< F, dim >\n-160 {\n-161 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-162\n-163 public:\n-_\b1_\b6_\b4 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-165\n-166 using _\bB_\ba_\bs_\be_\b:_\b:_\bo_\br_\bd_\be_\br;\n-167\n-_\b1_\b6_\b8 _\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-169\n-_\b1_\b7_\b0 void _\bb_\bu_\bi_\bl_\bd ( GeometryType gt )\n-171 {\n-172 assert( gt.dim() == _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn );\n-173 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-174\n-175 typename _\bB_\ba_\bs_\be_\b:_\b:_\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt *p = points_.data();\n-176 std::vector< unsigned int > count;\n-177 for( unsigned int mydim = 0; mydim <= _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++mydim )\n-178 {\n-179 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-180 std::fill( count.begin(), count.end(), 0u );\n-181 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-182 }\n-183 const auto &refElement = referenceElement(gt);\n-184 F weight = refElement.volume()/F(double(points_.size()));\n-185 for (auto &p : points_)\n-186 p._\bw_\be_\bi_\bg_\bh_\bt_\b_ = weight;\n-187 }\n-188\n-189 template< GeometryType::Id geometryId >\n-_\b1_\b9_\b0 bool _\bb_\bu_\bi_\bl_\bd ()\n-191 {\n-192 _\bb_\bu_\bi_\bl_\bd( GeometryType( geometryId ) );\n-193 return true;\n-194 }\n-195\n-_\b1_\b9_\b6 bool _\bb_\bu_\bi_\bl_\bd_\bC_\bu_\bb_\be ()\n-197 {\n-198 return build< GeometryTypes::cube(dim) > ();\n-199 }\n-200\n-_\b2_\b0_\b1 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( GeometryType, std::size_t /*order*/ ) { return true;\n-}\n-202 template< GeometryType::Id geometryId>\n-_\b2_\b0_\b3 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( std::size_t _\bo_\br_\bd_\be_\br ) {\n-204 return _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs( GeometryType( geometryId ), _\bo_\br_\bd_\be_\br );\n-205 }\n-206\n-207 private:\n-208 using _\bB_\ba_\bs_\be_\b:_\b:_\bp_\bo_\bi_\bn_\bt_\bs_\b_;\n-209 };\n-210\n-211} // namespace Dune\n-212\n-213#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+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 _\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:55\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:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-unsigned int index() const\n-Return offset within subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:68\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-unsigned int subEntity() const\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:160\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: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:_\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:203\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:164\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:201\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:170\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:196\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:168\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:37\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/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: pk2d.hh File Reference\n+dune-localfunctions: lfematrix.hh File Reference\n \n \n \n \n \n \n \n@@ -65,54 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    pk2d.hh File Reference
    \n+Functions
    \n+
    lfematrix.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 <cassert>
    \n+#include <vector>
    \n+#include "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 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::LFEMatrix< F >
     
    \n \n \n \n

    \n Namespaces

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

    \n-Typedefs

    template<class D , class R , unsigned int k>
    using Dune::Pk2DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 2, k >
     

    \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,34 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 | _\bT_\by_\bp_\be_\bd_\be_\bf_\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+ * _\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 _\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:_\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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n- 2, k >\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/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: pk2d.hh Source File\n+dune-localfunctions: lfematrix.hh Source File\n \n \n \n \n \n \n \n@@ -70,152 +70,230 @@\n
    \n \n \n \n \n \n \n
    \n-
    pk2d.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 (C) 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_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9
    \n-
    10#include <dune/geometry/type.hh>
    \n-
    11
    \n-\n-\n-\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-
    16#warning This header is deprecated
    \n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    20
    \n-
    25 template<class D, class R, unsigned int k>
    \n-\n-
    27 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n-\n-
    29
    \n+
    16 template< class F >
    \n+
    \n+\n+
    18 {
    \n+
    19 typedef LFEMatrix< F > This;
    \n+
    20 typedef std::vector< F > Row;
    \n+
    21 typedef std::vector<Row> RealMatrix;
    \n+
    22
    \n+
    23 public:
    \n+
    24 typedef F Field;
    \n+
    25
    \n+
    \n+
    26 operator const RealMatrix & () const
    \n+
    27 {
    \n+
    28 return matrix_;
    \n+
    29 }
    \n+
    \n
    30
    \n-
    32
    \n-
    39 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-
    41 typedef typename Geometry::ctype DF;
    \n-
    42 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,2,k> LocalBasis;
    \n-
    43 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \n-
    44
    \n-
    45 public:
    \n-
    \n-
    49 struct Traits {
    \n-\n-\n-
    52 LocalInterpolation,
    \n-
    53 typename Basis::Traits
    \n-\n-
    55 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> Coefficients;
    \n-
    56 };
    \n+
    \n+
    31 operator RealMatrix & ()
    \n+
    32 {
    \n+
    33 return matrix_;
    \n+
    34 }
    \n+
    \n+
    35
    \n+
    36 template <class Vector>
    \n+
    \n+
    37 void row( const unsigned int row, Vector &vec ) const
    \n+
    38 {
    \n+
    39 assert(row<rows());
    \n+
    40 for (int i=0; i<cols(); ++i)
    \n+
    41 field_cast(matrix_[row][i], vec[i]);
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+
    44 const Field &operator() ( const unsigned int row, const unsigned int col ) const
    \n+
    45 {
    \n+
    46 assert(row<rows());
    \n+
    47 assert(col<cols());
    \n+
    48 return matrix_[ row ][ col ];
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+
    51 Field &operator() ( const unsigned int row, const unsigned int col )
    \n+
    52 {
    \n+
    53 assert(row<rows());
    \n+
    54 assert(col<cols());
    \n+
    55 return matrix_[ row ][ col ];
    \n+
    56 }
    \n
    \n
    57
    \n-
    58 private:
    \n-
    59 static const GeometryType gt;
    \n-
    60 static const LocalBasis localBasis;
    \n-
    61 static const LocalInterpolation localInterpolation;
    \n+
    \n+
    58 unsigned int rows () const
    \n+
    59 {
    \n+
    60 return rows_;
    \n+
    61 }
    \n+
    \n
    62
    \n-
    63 typename Traits::Basis basis_;
    \n-
    64 typename Traits::Interpolation interpolation_;
    \n-
    65 typename Traits::Coefficients coefficients_;
    \n-
    66
    \n-
    67 public:
    \n-
    69
    \n-
    82 template<class VertexOrder>
    \n-
    \n-
    83 Pk2DFiniteElement(const Geometry &geometry,
    \n-
    84 const VertexOrder& vertexOrder) :
    \n-
    85 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n-
    86 coefficients_(vertexOrder.begin(0, 0))
    \n-
    87 { }
    \n+
    \n+
    63 unsigned int cols () const
    \n+
    64 {
    \n+
    65 return cols_;
    \n+
    66 }
    \n+
    \n+
    67
    \n+
    \n+
    68 const Field *rowPtr ( const unsigned int row ) const
    \n+
    69 {
    \n+
    70 assert(row<rows());
    \n+
    71 return &(matrix_[row][0]);
    \n+
    72 }
    \n+
    \n+
    73
    \n+
    \n+
    74 Field *rowPtr ( const unsigned int row )
    \n+
    75 {
    \n+
    76 assert(row<rows());
    \n+
    77 return &(matrix_[row][0]);
    \n+
    78 }
    \n+
    \n+
    79
    \n+
    \n+
    80 void resize ( const unsigned int rows, const unsigned int cols )
    \n+
    81 {
    \n+
    82 matrix_.resize(rows);
    \n+
    83 for (unsigned int i=0; i<rows; ++i)
    \n+
    84 matrix_[i].resize(cols);
    \n+
    85 rows_ = rows;
    \n+
    86 cols_ = cols;
    \n+
    87 }
    \n
    \n
    88
    \n-
    89 const typename Traits::Basis& basis() const { return basis_; }
    \n-
    \n-
    90 const typename Traits::Interpolation& interpolation() const
    \n-
    91 { return interpolation_; }
    \n-
    \n-
    \n-
    92 const typename Traits::Coefficients& coefficients() const
    \n-
    93 { return coefficients_; }
    \n-
    \n-
    94 const GeometryType &type() const { return gt; }
    \n-
    95 };
    \n-
    \n-
    96
    \n-
    97 template<class Geometry, class RF, std::size_t k>
    \n-
    98 const GeometryType
    \n-
    99 Pk2DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n-
    100
    \n-
    101 template<class Geometry, class RF, std::size_t k>
    \n-
    102 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalBasis
    \n-
    103 Pk2DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n-
    104
    \n-
    105 template<class Geometry, class RF, std::size_t k>
    \n-
    106 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n-
    107 Pk2DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n-
    108 LocalInterpolation();
    \n-
    109
    \n-
    111
    \n-
    121 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-\n-
    124
    \n-
    126
    \n-
    140 template<class VertexOrder>
    \n-
    \n-
    141 const FiniteElement make(const Geometry& geometry,
    \n-
    142 const VertexOrder& vertexOrder)
    \n-
    143 { return FiniteElement(geometry, vertexOrder); }
    \n-
    \n-
    144 };
    \n-
    \n-
    145}
    \n-
    146
    \n-
    147#endif
    \n-\n-\n-\n+
    \n+
    89 bool invert ()
    \n+
    90 {
    \n+
    91 using std::abs;
    \n+
    92 assert( rows() == cols() );
    \n+
    93 std::vector<unsigned int> p(rows());
    \n+
    94 for (unsigned int j=0; j<rows(); ++j)
    \n+
    95 p[j] = j;
    \n+
    96 for (unsigned int j=0; j<rows(); ++j)
    \n+
    97 {
    \n+
    98 // pivot search
    \n+
    99 unsigned int r = j;
    \n+
    100 Field max = abs( (*this)(j,j) );
    \n+
    101 for (unsigned int i=j+1; i<rows(); ++i)
    \n+
    102 {
    \n+
    103 if ( abs( (*this)(i,j) ) > max )
    \n+
    104 {
    \n+
    105 max = abs( (*this)(i,j) );
    \n+
    106 r = i;
    \n+
    107 }
    \n+
    108 }
    \n+
    109 if (max == Zero<Field>())
    \n+
    110 return false;
    \n+
    111 // row swap
    \n+
    112 if (r > j)
    \n+
    113 {
    \n+
    114 for (unsigned int k=0; k<cols(); ++k)
    \n+
    115 std::swap( (*this)(j,k), (*this)(r,k) );
    \n+
    116 std::swap( p[j], p[r] );
    \n+
    117 }
    \n+
    118 // transformation
    \n+
    119 Field hr = Unity<Field>()/(*this)(j,j);
    \n+
    120 for (unsigned int i=0; i<rows(); ++i)
    \n+
    121 (*this)(i,j) *= hr;
    \n+
    122 (*this)(j,j) = hr;
    \n+
    123 for (unsigned int k=0; k<cols(); ++k)
    \n+
    124 {
    \n+
    125 if (k==j) continue;
    \n+
    126 for (unsigned int i=0; i<rows(); ++i)
    \n+
    127 {
    \n+
    128 if (i==j) continue;
    \n+
    129 (*this)(i,k) -= (*this)(i,j)*(*this)(j,k);
    \n+
    130 }
    \n+
    131 (*this)(j,k) *= -hr;
    \n+
    132 }
    \n+
    133 }
    \n+
    134 // column exchange
    \n+
    135 Row hv(rows());
    \n+
    136 for (unsigned int i=0; i<rows(); ++i)
    \n+
    137 {
    \n+
    138 for (unsigned int k=0; k<rows(); ++k)
    \n+
    139 hv[ p[k] ] = (*this)(i,k);
    \n+
    140 for (unsigned int k=0; k<rows(); ++k)
    \n+
    141 (*this)(i,k) = hv[k];
    \n+
    142 }
    \n+
    143 return true;
    \n+
    144 }
    \n+
    \n+
    145
    \n+
    146 private:
    \n+
    147 RealMatrix matrix_;
    \n+
    148 unsigned int cols_,rows_;
    \n+
    149 };
    \n+
    \n+
    150
    \n+
    151 template< class Field >
    \n+
    \n+
    152 inline std::ostream &operator<<(std::ostream &out, const LFEMatrix<Field> &mat)
    \n+
    153 {
    \n+
    154 for (unsigned int r=0; r<mat.rows(); ++r)
    \n+
    155 {
    \n+
    156 out << field_cast<double>(mat(r,0));
    \n+
    157 for (unsigned int c=1; c<mat.cols(); ++c)
    \n+
    158 {
    \n+
    159 out << " , " << field_cast<double>(mat(r,c));
    \n+
    160 }
    \n+
    161 out << std::endl;
    \n+
    162 }
    \n+
    163 return out;
    \n+
    164 }
    \n+
    \n+
    165}
    \n+
    166
    \n+
    167#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \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-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n-
    Langrange finite element of arbitrary order on triangles.
    Definition pk2d.hh:40
    \n-
    Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk2DFiniteElement
    Definition pk2d.hh:83
    \n-
    const Traits::Interpolation & interpolation() const
    Definition pk2d.hh:90
    \n-
    const Traits::Basis & basis() const
    Definition pk2d.hh:89
    \n-
    const Traits::Coefficients & coefficients() const
    Definition pk2d.hh:92
    \n-
    const GeometryType & type() const
    Definition pk2d.hh:94
    \n-
    Definition pk2d.hh:49
    \n-
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk2d.hh:50
    \n-
    Impl::LagrangeSimplexLocalCoefficients< 2, k > Coefficients
    Definition pk2d.hh:55
    \n-
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk2d.hh:54
    \n-
    Factory for Pk2DFiniteElement objects.
    Definition pk2d.hh:122
    \n-
    Pk2DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk2d.hh:123
    \n-
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk2DFiniteElementFactory
    Definition pk2d.hh:141
    \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:152
    \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:74
    \n+
    unsigned int cols() const
    Definition lfematrix.hh:63
    \n+
    const Field * rowPtr(const unsigned int row) const
    Definition lfematrix.hh:68
    \n+
    void resize(const unsigned int rows, const unsigned int cols)
    Definition lfematrix.hh:80
    \n+
    const Field & operator()(const unsigned int row, const unsigned int col) const
    Definition lfematrix.hh:44
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition lfematrix.hh:37
    \n+
    unsigned int rows() const
    Definition lfematrix.hh:58
    \n+
    bool invert()
    Definition lfematrix.hh:89
    \n+
    F Field
    Definition lfematrix.hh:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,169 +1,226 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n+6#define DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_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+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#warning This header is deprecated\n-17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n-20\n-25 template\n-_\b2_\b6 using _\bP_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n-28 = _\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,_\bk_\b>;\n-29\n+16 template< class F >\n+_\b1_\b7 class _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n+18 {\n+19 typedef _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n+20 typedef std::vector< F > Row;\n+21 typedef std::vector RealMatrix;\n+22\n+23 public:\n+_\b2_\b4 typedef F _\bF_\bi_\be_\bl_\bd;\n+25\n+_\b2_\b6 operator const RealMatrix & () const\n+27 {\n+28 return matrix_;\n+29 }\n 30\n-32\n-39 template\n-_\b4_\b0 class _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n-41 typedef typename Geometry::ctype DF;\n-42 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n-43 typedef Impl::LagrangeSimplexLocalInterpolation\n-LocalInterpolation;\n-44\n-45 public:\n-_\b4_\b9 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-_\b5_\b0 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-51 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-52 LocalInterpolation,\n-53 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-_\b5_\b4 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b5_\b5 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-56 };\n+_\b3_\b1 operator RealMatrix & ()\n+32 {\n+33 return matrix_;\n+34 }\n+35\n+36 template \n+_\b3_\b7 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n+38 {\n+39 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n+40 for (int i=0; i<_\bc_\bo_\bl_\bs(); ++i)\n+41 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(matrix_[_\br_\bo_\bw][i], vec[i]);\n+42 }\n+43\n+_\b4_\b4 const _\bF_\bi_\be_\bl_\bd &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const unsigned int _\br_\bo_\bw, const unsigned int col )\n+const\n+45 {\n+46 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n+47 assert(col<_\bc_\bo_\bl_\bs());\n+48 return matrix_[ _\br_\bo_\bw ][ col ];\n+49 }\n+50\n+_\b5_\b1 _\bF_\bi_\be_\bl_\bd &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const unsigned int _\br_\bo_\bw, const unsigned int col )\n+52 {\n+53 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n+54 assert(col<_\bc_\bo_\bl_\bs());\n+55 return matrix_[ _\br_\bo_\bw ][ col ];\n+56 }\n 57\n-58 private:\n-59 static const GeometryType gt;\n-60 static const LocalBasis localBasis;\n-61 static const LocalInterpolation localInterpolation;\n+_\b5_\b8 unsigned int _\br_\bo_\bw_\bs () const\n+59 {\n+60 return rows_;\n+61 }\n 62\n-63 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n-64 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n-65 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n-66\n-67 public:\n-69\n-82 template\n-_\b8_\b3 _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n-84 const VertexOrder& vertexOrder) :\n-85 basis_(localBasis, geometry), interpolation_(localInterpolation),\n-86 coefficients_(vertexOrder.begin(0, 0))\n-87 { }\n+_\b6_\b3 unsigned int _\bc_\bo_\bl_\bs () const\n+64 {\n+65 return cols_;\n+66 }\n+67\n+_\b6_\b8 const _\bF_\bi_\be_\bl_\bd *_\br_\bo_\bw_\bP_\bt_\br ( const unsigned int _\br_\bo_\bw ) const\n+69 {\n+70 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n+71 return &(matrix_[_\br_\bo_\bw][0]);\n+72 }\n+73\n+_\b7_\b4 _\bF_\bi_\be_\bl_\bd *_\br_\bo_\bw_\bP_\bt_\br ( const unsigned int _\br_\bo_\bw )\n+75 {\n+76 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n+77 return &(matrix_[_\br_\bo_\bw][0]);\n+78 }\n+79\n+_\b8_\b0 void _\br_\be_\bs_\bi_\bz_\be ( const unsigned int _\br_\bo_\bw_\bs, const unsigned int _\bc_\bo_\bl_\bs )\n+81 {\n+82 matrix_.resize(_\br_\bo_\bw_\bs);\n+83 for (unsigned int i=0; i<_\br_\bo_\bw_\bs; ++i)\n+84 matrix_[i]._\br_\be_\bs_\bi_\bz_\be(_\bc_\bo_\bl_\bs);\n+85 rows_ = _\br_\bo_\bw_\bs;\n+86 cols_ = _\bc_\bo_\bl_\bs;\n+87 }\n 88\n-_\b8_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\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_\b2 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-93 { return coefficients_; }\n-_\b9_\b4 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n-95 };\n-96\n-97 template\n-98 const GeometryType\n-99 Pk2DFiniteElement::gt(GeometryTypes::simplex(2));\n-100\n-101 template\n-102 const typename Pk2DFiniteElement::LocalBasis\n-103 Pk2DFiniteElement::localBasis = LocalBasis();\n-104\n-105 template\n-106 const typename Pk2DFiniteElement::LocalInterpolation\n-107 Pk2DFiniteElement::localInterpolation =\n-108 LocalInterpolation();\n-109\n-111\n-121 template\n-_\b1_\b2_\b2 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_\b2_\b3 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-124\n-126\n-140 template\n-_\b1_\b4_\b1 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n-142 const VertexOrder& vertexOrder)\n-143 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n-144 };\n-145}\n-146\n-147#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-_\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+_\b8_\b9 bool _\bi_\bn_\bv_\be_\br_\bt ()\n+90 {\n+91 using std::abs;\n+92 assert( _\br_\bo_\bw_\bs() == _\bc_\bo_\bl_\bs() );\n+93 std::vector p(_\br_\bo_\bw_\bs());\n+94 for (unsigned int j=0; j<_\br_\bo_\bw_\bs(); ++j)\n+95 p[j] = j;\n+96 for (unsigned int j=0; j<_\br_\bo_\bw_\bs(); ++j)\n+97 {\n+98 // pivot search\n+99 unsigned int r = j;\n+100 _\bF_\bi_\be_\bl_\bd max = abs( (*this)(j,j) );\n+101 for (unsigned int i=j+1; i<_\br_\bo_\bw_\bs(); ++i)\n+102 {\n+103 if ( abs( (*this)(i,j) ) > max )\n+104 {\n+105 max = abs( (*this)(i,j) );\n+106 r = i;\n+107 }\n+108 }\n+109 if (max == _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>())\n+110 return false;\n+111 // row swap\n+112 if (r > j)\n+113 {\n+114 for (unsigned int k=0; k<_\bc_\bo_\bl_\bs(); ++k)\n+115 std::swap( (*this)(j,k), (*this)(r,k) );\n+116 std::swap( p[j], p[r] );\n+117 }\n+118 // transformation\n+119 _\bF_\bi_\be_\bl_\bd hr = _\bU_\bn_\bi_\bt_\by_\b<_\bF_\bi_\be_\bl_\bd_\b>()/(*this)(j,j);\n+120 for (unsigned int i=0; i<_\br_\bo_\bw_\bs(); ++i)\n+121 (*this)(i,j) *= hr;\n+122 (*this)(j,j) = hr;\n+123 for (unsigned int k=0; k<_\bc_\bo_\bl_\bs(); ++k)\n+124 {\n+125 if (k==j) continue;\n+126 for (unsigned int i=0; i<_\br_\bo_\bw_\bs(); ++i)\n+127 {\n+128 if (i==j) continue;\n+129 (*this)(i,k) -= (*this)(i,j)*(*this)(j,k);\n+130 }\n+131 (*this)(j,k) *= -hr;\n+132 }\n+133 }\n+134 // column exchange\n+135 Row hv(_\br_\bo_\bw_\bs());\n+136 for (unsigned int i=0; i<_\br_\bo_\bw_\bs(); ++i)\n+137 {\n+138 for (unsigned int k=0; k<_\br_\bo_\bw_\bs(); ++k)\n+139 hv[ p[k] ] = (*this)(i,k);\n+140 for (unsigned int k=0; k<_\br_\bo_\bw_\bs(); ++k)\n+141 (*this)(i,k) = hv[k];\n+142 }\n+143 return true;\n+144 }\n+145\n+146 private:\n+147 RealMatrix matrix_;\n+148 unsigned int cols_,rows_;\n+149 };\n+150\n+151 template< class Field >\n+_\b1_\b5_\b2 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+153 {\n+154 for (unsigned int r=0; r(mat(r,0));\n+157 for (unsigned int c=1; c(mat(r,c));\n+160 }\n+161 out << std::endl;\n+162 }\n+163 return out;\n+164 }\n+165}\n+166\n+167#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_\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:_\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:838\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:40\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: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:_\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:90\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:89\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:92\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:94\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:49\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:50\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:55\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:54\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:122\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:123\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:141\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:152\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:74\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:63\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:68\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:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Field & operator()(const unsigned int row, const unsigned int col) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:44\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:37\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:58\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:89\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: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/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: lagrangebasis.hh File Reference\n+dune-localfunctions: basisevaluator.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,46 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    lagrangebasis.hh File Reference
    \n+
    basisevaluator.hh File Reference
    \n
    \n
    \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+
    #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

    struct  Dune::LagrangeBasisFactory< LP, dim, SF, CF >
    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.9.0\n Loading...\n Searching...\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+ * _\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-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+basisevaluator.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/_\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-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+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/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: lagrangebasis.hh Source File\n+dune-localfunctions: basisevaluator.hh Source File\n \n \n \n \n \n \n \n@@ -70,58 +70,279 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    lagrangebasis.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 (C) 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_BASISEVALUATOR_HH
    \n+
    6#define DUNE_BASISEVALUATOR_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <dune/common/exceptions.hh>
    \n-
    10
    \n-\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-\n+
    14#include <dune/geometry/type.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 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+\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#endif // #ifndef DUNE_LAGRANGEBASIS_HH
    \n-\n-\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+
    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
    Definition bdfmcube.hh:18
    \n-
    Definition lagrangebasis.hh:25
    \n-
    Definition defaultbasisfactory.hh:38
    \n-\n+
    Field operator*(const Unity< Field > &u, const Field &f)
    Definition field.hh:50
    \n+
    DerivativeLayout
    Definition tensor.hh:168
    \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:172
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,50 +1,323 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BASISEVALUATOR_HH\n+6#define DUNE_BASISEVALUATOR_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+8#include \n+9\n+10#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/_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 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+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#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+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+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+_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\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_\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+_\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:168\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:172\n ===============================================================================\n 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: q1.hh File Reference\n+dune-localfunctions: multiindex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,49 +65,75 @@\n \n \n \n \n \n \n \n
    \n \n-
    q1.hh File Reference
    \n+Functions
    \n+
    multiindex.hh File Reference
    \n \n
    \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 <vector>
    \n+#include <ostream>
    \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 Classes

    class  Dune::Q1FiniteElementFactory< Geometry, RF >
     Factory for global-valued Q1 elements. More...
    class  Dune::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+\n+\n+\n+\n

    \n-Typedefs

    template<class D , class R , int dim>
    using Dune::Q1LocalFiniteElement = LagrangeCubeLocalFiniteElement< D, R, dim, 1 >
     The local Q1 finite element on cubes.
     

    \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,29 +1,65 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\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+ * _\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+#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:_\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:_\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:_\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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R, dim,\n- 1 >\n-\u00a0 The local Q1 finite element on cubes.\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/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: q1.hh Source File\n+dune-localfunctions: multiindex.hh Source File\n \n \n \n \n \n \n \n@@ -70,83 +70,644 @@\n
    \n \n \n \n \n \n \n
    \n-
    q1.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 (C) 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+
    5#ifndef DUNE_MULTIINDEX_HH
    \n+
    6#define DUNE_MULTIINDEX_HH
    \n+
    7
    \n+
    8#include <vector>
    \n+
    9#include <ostream>
    \n
    10
    \n-\n-\n-\n+
    11#include <dune/common/fvector.hh>
    \n+
    12
    \n+\n
    14
    \n-
    15#warning This header is deprecated
    \n-
    16
    \n-
    17namespace Dune
    \n-
    18{
    \n-
    19
    \n-
    27 template<class D, class R, int dim>
    \n-\n-
    29 [[deprecated("use LagrangeCubeLocalFiniteElement instead")]]
    \n-\n+
    15namespace Dune
    \n+
    16{
    \n+
    17 /****************************************************************
    \n+
    18 * Provide a Field class which can be used in evaluation methods
    \n+
    19 * to produce MultiIndex presentation of polynomials.
    \n+
    20 ****************************************************************/
    \n+
    21 // Internal Forward Declarations
    \n+
    22 // -----------------------------
    \n+
    23
    \n+
    24 template< int dim, class Field >
    \n+
    25 class MultiIndex;
    \n+
    26
    \n+
    27 template< int dim, class Field >
    \n+
    28 std::ostream &operator<< ( std::ostream &, const MultiIndex< dim,Field > & );
    \n+
    29
    \n+
    30
    \n
    31
    \n-
    32
    \n+
    32 // MultiIndex
    \n+
    33 // ----------
    \n
    34
    \n-
    39 template<class Geometry, class RF>
    \n-
    \n-\n-\n-
    42 LagrangeCubeLocalFiniteElement<
    \n-
    43 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n-
    44 >,
    \n-
    45 Geometry
    \n-
    46 >
    \n-
    47 {
    \n-\n-
    49 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n-
    50 > LFE;
    \n-\n-
    52
    \n-
    53 static const LFE lfe;
    \n-
    54
    \n-
    55 public:
    \n-\n-
    58 };
    \n-
    \n-
    59
    \n-
    60 template<class Geometry, class RF>
    \n-
    61 const typename Q1FiniteElementFactory<Geometry, RF>::LFE
    \n-
    62 Q1FiniteElementFactory<Geometry, RF>::lfe;
    \n-
    63}
    \n-
    64
    \n-
    65#endif
    \n-\n-\n-\n+
    35 template< int dim,class Field >
    \n+
    \n+\n+
    37 {
    \n+\n+
    39
    \n+
    40 friend std::ostream &operator<<<> ( std::ostream &, const This & );
    \n+
    41
    \n+
    42 public:
    \n+
    43 static const int dimension = dim;
    \n+
    44
    \n+
    \n+\n+
    46 : vecZ_( 0 ),
    \n+
    47 vecOMZ_( 0 ),
    \n+
    48 factor_( 1. ),
    \n+
    49 next_( 0 )
    \n+
    50 {}
    \n+
    \n+
    51 template <class F>
    \n+
    \n+
    52 explicit MultiIndex (const F &f)
    \n+
    53 : vecZ_( 0 ),
    \n+
    54 vecOMZ_( 0 ),
    \n+
    55 factor_( field_cast<Field>(f) ),
    \n+
    56 next_( 0 )
    \n+
    57 {}
    \n+
    \n+
    58
    \n+
    \n+
    59 MultiIndex ( int, const This &other )
    \n+
    60 : vecZ_( other.vecOMZ_ ),
    \n+
    61 vecOMZ_( other.vecZ_ ),
    \n+
    62 factor_( other.factor_ )
    \n+
    63 {
    \n+
    64 assert(!other.next_);
    \n+
    65 if (other.next_)
    \n+
    66 {
    \n+
    67 next_ = new This( *(other.next_) );
    \n+
    68 }
    \n+
    69 else
    \n+
    70 next_ = 0;
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    73 MultiIndex ( const This &other )
    \n+
    74 : vecZ_( other.vecZ_ ),
    \n+
    75 vecOMZ_( other.vecOMZ_ ),
    \n+
    76 factor_( other.factor_ )
    \n+
    77 {
    \n+
    78 if (other.next_)
    \n+
    79 {
    \n+
    80 next_ = new This( *(other.next_) );
    \n+
    81 }
    \n+
    82 else
    \n+
    83 next_ = 0;
    \n+
    84 }
    \n+
    \n+
    85
    \n+
    \n+\n+
    87 {
    \n+
    88 remove();
    \n+
    89 }
    \n+
    \n+
    90
    \n+
    \n+
    91 int z(int i) const
    \n+
    92 {
    \n+
    93 return vecZ_[i];
    \n+
    94 }
    \n+
    \n+
    \n+
    95 int omz(int i) const
    \n+
    96 {
    \n+
    97 return vecOMZ_[i];
    \n+
    98 }
    \n+
    \n+
    \n+
    99 const Field &factor() const
    \n+
    100 {
    \n+
    101 return factor_;
    \n+
    102 }
    \n+
    \n+
    103
    \n+
    \n+
    104 This &operator= ( const This &other )
    \n+
    105 {
    \n+
    106 remove();
    \n+
    107 vecZ_ = other.vecZ_;
    \n+
    108 vecOMZ_ = other.vecOMZ_;
    \n+
    109 factor_ = other.factor_;
    \n+
    110 if (other.next_)
    \n+
    111 next_ = new This(*(other.next_));
    \n+
    112 return *this;
    \n+
    113 }
    \n+
    \n+
    \n+\n+
    115 {
    \n+
    116 remove();
    \n+
    117 vecZ_ = 0;
    \n+
    118 vecOMZ_ = 0;
    \n+
    119 factor_ = 0.;
    \n+
    120 return *this;
    \n+
    121 }
    \n+
    \n+
    \n+\n+
    123 {
    \n+
    124 remove();
    \n+
    125 vecZ_ = 0;
    \n+
    126 vecOMZ_ = 0;
    \n+
    127 factor_ = 1.;
    \n+
    128 return *this;
    \n+
    129 }
    \n+
    \n+
    130 template <class F>
    \n+
    \n+
    131 This &operator= ( const F &f )
    \n+
    132 {
    \n+
    133 remove();
    \n+
    134 vecZ_ = 0;
    \n+
    135 vecOMZ_ = 0;
    \n+
    136 factor_ = field_cast<Field>(f);
    \n+
    137 return *this;
    \n+
    138 }
    \n+
    \n+
    139
    \n+
    \n+
    140 bool operator== (const This &other) const
    \n+
    141 {
    \n+
    142 assert(!next_ && !other.next_);
    \n+
    143 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ && factor_==other.factor_);
    \n+
    144 }
    \n+
    \n+
    145
    \n+
    146 template <class F>
    \n+
    \n+
    147 This &operator*= ( const F &f )
    \n+
    148 {
    \n+
    149 factor_ *= field_cast<Field>(f);
    \n+
    150 if (next_)
    \n+
    151 (*next_) *= f;
    \n+
    152 return *this;
    \n+
    153 }
    \n+
    \n+
    154 template <class F>
    \n+
    \n+
    155 This &operator/= ( const F &f )
    \n+
    156 {
    \n+
    157 factor_ /= field_cast<Field>(f);
    \n+
    158 if (next_)
    \n+
    159 (*next_) /= f;
    \n+
    160 return *this;
    \n+
    161 }
    \n+
    \n+
    162
    \n+
    \n+
    163 This &operator*= ( const This &other )
    \n+
    164 {
    \n+
    165 assert(!other.next_);
    \n+
    166 vecZ_ += other.vecZ_;
    \n+
    167 vecOMZ_ += other.vecOMZ_;
    \n+
    168 factor_ *= other.factor_;
    \n+
    169 if (next_)
    \n+
    170 (*next_) *= other;
    \n+
    171 return *this;
    \n+
    172 }
    \n+
    \n+
    \n+
    173 This &operator/= ( const This &other )
    \n+
    174 {
    \n+
    175 assert(!other.next_);
    \n+
    176 vecZ_ -= other.vecZ_;
    \n+
    177 vecOMZ_ -= other.vecOMZ_;
    \n+
    178 factor_ /= other.factor_;
    \n+
    179 if (next_)
    \n+
    180 (*next_) /= other;
    \n+
    181 return *this;
    \n+
    182 }
    \n+
    \n+
    183
    \n+
    \n+
    184 This &operator+= ( const This &other )
    \n+
    185 {
    \n+
    186 assert(!other.next_);
    \n+
    187 if (std::abs(other.factor_)<1e-10)
    \n+
    188 return *this;
    \n+
    189 if (std::abs(factor_)<1e-10)
    \n+
    190 {
    \n+
    191 *this = other;
    \n+
    192 return *this;
    \n+
    193 }
    \n+
    194 if (!sameMultiIndex(other))
    \n+
    195 {
    \n+
    196 if (next_)
    \n+
    197 (*next_)+=other;
    \n+
    198 else
    \n+
    199 {
    \n+
    200 next_ = new This(other);
    \n+
    201 }
    \n+
    202 }
    \n+
    203 else
    \n+
    204 factor_ += other.factor_;
    \n+
    205 return *this;
    \n+
    206 }
    \n+
    \n+
    \n+
    207 This &operator-= ( const This &other )
    \n+
    208 {
    \n+
    209 assert(!other.next_);
    \n+
    210 if (!sameMultiIndex(other))
    \n+
    211 {
    \n+
    212 if (next_)
    \n+
    213 next_-=other;
    \n+
    214 else
    \n+
    215 {
    \n+
    216 next_ = new This(other);
    \n+
    217 }
    \n+
    218 }
    \n+
    219 else
    \n+
    220 factor_ -= other.factor_;
    \n+
    221 return *this;
    \n+
    222 }
    \n+
    \n+
    223
    \n+
    224 template <class F>
    \n+
    \n+
    225 This operator* ( const F &f ) const
    \n+
    226 {
    \n+
    227 This z = *this;
    \n+
    228 return (z *= f);
    \n+
    229 }
    \n+
    \n+
    230 template <class F>
    \n+
    \n+
    231 This operator/ ( const F &f ) const
    \n+
    232 {
    \n+
    233 This z = *this;
    \n+
    234 return (z /= f);
    \n+
    235 }
    \n+
    \n+
    236
    \n+
    \n+
    237 This operator* ( const This &other ) const
    \n+
    238 {
    \n+
    239 This z = *this;
    \n+
    240 return (z *= other);
    \n+
    241 }
    \n+
    \n+
    \n+
    242 This operator/ ( const This &other ) const
    \n+
    243 {
    \n+
    244 This z = *this;
    \n+
    245 return (z /= other);
    \n+
    246 }
    \n+
    \n+
    247
    \n+
    \n+
    248 This operator+ ( const This &other ) const
    \n+
    249 {
    \n+
    250 This z = *this;
    \n+
    251 return (z += other);
    \n+
    252 }
    \n+
    \n+
    \n+
    253 This operator- ( const This &other ) const
    \n+
    254 {
    \n+
    255 This z = *this;
    \n+
    256 return (z -= other);
    \n+
    257 }
    \n+
    \n+
    258
    \n+
    \n+
    259 void set ( int d, int power = 1 )
    \n+
    260 {
    \n+
    261 vecZ_[ d ] = power;
    \n+
    262 }
    \n+
    \n+
    263
    \n+
    \n+
    264 int absZ () const
    \n+
    265 {
    \n+
    266 int ret = 0;
    \n+
    267 for( int i = 0; i < dimension; ++i )
    \n+
    268 ret += std::abs( vecZ_[ i ] );
    \n+
    269 return ret;
    \n+
    270 }
    \n+
    \n+
    271
    \n+
    \n+
    272 int absOMZ() const
    \n+
    273 {
    \n+
    274 int ret = 0;
    \n+
    275 for( int i = 0; i < dimension; ++i )
    \n+
    276 ret += std::abs( vecOMZ_[ i ] );
    \n+
    277 return ret;
    \n+
    278 }
    \n+
    \n+
    279
    \n+
    \n+
    280 bool sameMultiIndex(const This &ind)
    \n+
    281 {
    \n+
    282 for( int i = 0; i < dimension; ++i )
    \n+
    283 {
    \n+
    284 if ( vecZ_[i] != ind.vecZ_[i] ||
    \n+
    285 vecOMZ_[i] != vecOMZ_[i] )
    \n+
    286 return false;
    \n+
    287 }
    \n+
    288 return true;
    \n+
    289 }
    \n+
    \n+
    290
    \n+
    291 private:
    \n+
    292 void remove()
    \n+
    293 {
    \n+
    294 if (next_)
    \n+
    295 {
    \n+
    296 next_->remove();
    \n+
    297 delete next_;
    \n+
    298 next_ = 0;
    \n+
    299 }
    \n+
    300 }
    \n+
    301
    \n+
    302 typedef Dune::FieldVector< int, dimension > Vector;
    \n+
    303
    \n+
    304 Vector vecZ_;
    \n+
    305 Vector vecOMZ_;
    \n+
    306 Field factor_;
    \n+
    307
    \n+
    308 This *next_;
    \n+
    309 };
    \n+
    \n+
    310
    \n+
    311 template <int dim, class Field, class F>
    \n+
    \n+\n+
    313 const MultiIndex<dim,Field> &m)
    \n+
    314 {
    \n+\n+
    316 return (z *= f);
    \n+
    317 }
    \n+
    \n+
    318 template <int dim, class Field, class F>
    \n+
    \n+\n+
    320 const MultiIndex<dim,Field> &m)
    \n+
    321 {
    \n+\n+
    323 return (z /= f);
    \n+
    324 }
    \n+
    \n+
    325
    \n+
    326 template <int d, class F>
    \n+
    \n+
    327 std::ostream &operator<<(std::ostream& out,const std::vector<MultiIndex<d,F> >& y) {
    \n+
    328 for (unsigned int r=0; r<y.size(); ++r) {
    \n+
    329 out << "f_{" << r << "}(" << char('a');
    \n+
    330 for (int i=1; i<d; ++i)
    \n+
    331 out << "," << char('a'+i);
    \n+
    332 out << ")=";
    \n+
    333 out << y[r] << std::endl;
    \n+
    334 }
    \n+
    335 return out;
    \n+
    336 }
    \n+
    \n+
    337 template <int d,class F,int dimR>
    \n+
    \n+
    338 std::ostream &operator<<(std::ostream& out,
    \n+
    339 const std::vector<Dune::FieldVector<MultiIndex<d,F>,dimR> >& y) {
    \n+
    340 out << "\\\\begin{eqnarray*}" << std::endl;
    \n+
    341 for (unsigned int k=0; k<y.size(); ++k) {
    \n+
    342 out << "f_{" << k << "}(" << char('a');
    \n+
    343 for (int i=1; i<d; ++i)
    \n+
    344 out << "," << char('a'+i);
    \n+
    345 out << ") &=& ( ";
    \n+
    346 out << y[k][0] ;
    \n+
    347 for (unsigned int r=1; r<dimR; ++r) {
    \n+
    348 out << " , " << y[k][r] ;
    \n+
    349 }
    \n+
    350 out << " ) \\\\\\\\" << std::endl;
    \n+
    351 }
    \n+
    352 out << "\\\\end{eqnarray*}" << std::endl;
    \n+
    353 return out;
    \n+
    354 }
    \n+
    \n+
    355 template <int d,class F,int dimR1,int dimR2>
    \n+
    \n+
    356 std::ostream &operator<<(std::ostream& out,
    \n+
    357 const std::vector<Dune::FieldMatrix<MultiIndex<d,F>,dimR1,dimR2> >& y) {
    \n+
    358 out << "\\\\begin{eqnarray*}" << std::endl;
    \n+
    359 for (unsigned int k=0; k<y.size(); ++k) {
    \n+
    360 for (int q=0; q<dimR2; q++) {
    \n+
    361 out << "d_{" << char('a'+q) << "}f_{" << k << "}(" << char('a');
    \n+
    362 for (int i=1; i<d; ++i)
    \n+
    363 out << "," << char('a'+i);
    \n+
    364 out << ") &=& ( ";
    \n+
    365 out << y[k][0][q] ;
    \n+
    366 for (unsigned int r=1; r<dimR1; ++r) {
    \n+
    367 out << " , " << y[k][r][q] ;
    \n+
    368 }
    \n+
    369 out << " ) \\\\\\\\" << std::endl;
    \n+
    370 }
    \n+
    371 }
    \n+
    372 out << "\\\\end{eqnarray*}" << std::endl;
    \n+
    373 return out;
    \n+
    374 }
    \n+
    \n+
    375 template <int d, class F>
    \n+
    \n+
    376 std::ostream &operator<<(std::ostream& out,const MultiIndex<d,F>& val)
    \n+
    377 {
    \n+
    378 bool first = true;
    \n+
    379 const MultiIndex<d,F> *m = &val;
    \n+
    380 do {
    \n+
    381 if (m->absZ()==0 && std::abs(m->factor())<1e-10)
    \n+
    382 {
    \n+
    383 if (!m->next_ || !first)
    \n+
    384 {
    \n+
    385 out << "0";
    \n+
    386 break;
    \n+
    387 }
    \n+
    388 else {
    \n+
    389 m = m->next_;
    \n+
    390 continue;
    \n+
    391 }
    \n+
    392 }
    \n+
    393 if (m->factor()>0 && !first)
    \n+
    394 out << " + ";
    \n+
    395 else if (m->factor()<0)
    \n+
    396 if (!first)
    \n+
    397 out << " - ";
    \n+
    398 else
    \n+
    399 out << "- ";
    \n+
    400 else
    \n+
    401 out << " ";
    \n+
    402 first = false;
    \n+
    403 F f = std::abs(m->factor());
    \n+
    404 if (m->absZ()==0)
    \n+
    405 out << f;
    \n+
    406 else {
    \n+
    407 if ( std::abs(f)<1e-10)
    \n+
    408 out << 0;
    \n+
    409 else
    \n+
    410 {
    \n+
    411 F f_1(f);
    \n+
    412 f_1 -= 1.; // better Unity<F>();
    \n+
    413 if ( std::abs(f_1)>1e-10)
    \n+
    414 out << f;
    \n+
    415 int absVal = 0;
    \n+
    416 for (int i=0; i<d; ++i) {
    \n+
    417 if (m->vecZ_[i]==0)
    \n+
    418 continue;
    \n+
    419 else if (m->vecZ_[i]==1)
    \n+
    420 out << char('a'+i);
    \n+
    421 else if (m->vecZ_[i]>0)
    \n+
    422 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n+
    423 else if (m->vecZ_[i]<0)
    \n+
    424 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n+
    425 absVal += m->vecZ_[i];
    \n+
    426 if (absVal<m->absZ()) out << "";
    \n+
    427 }
    \n+
    428 }
    \n+
    429 }
    \n+
    430 /*
    \n+
    431 if (mi.absOMZ()>0) {
    \n+
    432 for (int i=0;i<=mi.absZ();++i) {
    \n+
    433 if (mi.vecOMZ_[i]==0)
    \n+
    434 continue;
    \n+
    435 else if (mi.vecOMZ_[i]==1)
    \n+
    436 out << (1-char('a'+i));
    \n+
    437 else if (mi.vecOMZ_[i]>0)
    \n+
    438 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n+
    439 else if (mi.vecOMZ_[i]<0)
    \n+
    440 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n+
    441 if (i==mi.absZ()+1) out << "*";
    \n+
    442 }
    \n+
    443 }
    \n+
    444 */
    \n+
    445 m = m->next_;
    \n+
    446 } while (m);
    \n+
    447 return out;
    \n+
    448 }
    \n+
    \n+
    449
    \n+
    450 template< int dim, class F>
    \n+
    \n+
    451 struct Unity< MultiIndex< dim, F > >
    \n+
    452 {
    \n+\n+
    454
    \n+
    \n+
    455 operator Field () const
    \n+
    456 {
    \n+
    457 return Field();
    \n+
    458 }
    \n+
    \n+
    459
    \n+
    \n+
    460 Field operator- ( const Field &other ) const
    \n+
    461 {
    \n+
    462 return Field( 1, other );
    \n+
    463 }
    \n+
    \n+
    464
    \n+
    \n+
    465 Field operator/ ( const Field &other ) const
    \n+
    466 {
    \n+
    467 return Field() / other;
    \n+
    468 }
    \n+
    \n+
    469 };
    \n+
    \n+
    470
    \n+
    471
    \n+
    472
    \n+
    473 template< int dim, class F >
    \n+
    \n+
    474 struct Zero< MultiIndex< dim,F > >
    \n+
    475 {
    \n+\n+
    477
    \n+
    478 // zero does not acutally exist
    \n+
    \n+
    479 operator Field ()
    \n+
    480 {
    \n+
    481 return Field(0);
    \n+
    482 }
    \n+
    \n+
    483 };
    \n+
    \n+
    484
    \n+
    485 template< int dim, class Field >
    \n+
    \n+\n+
    487 {
    \n+
    488 return true;
    \n+
    489 }
    \n+
    \n+
    490
    \n+
    491 template< int dim, class Field >
    \n+
    \n+\n+
    493 {
    \n+
    494 return true;
    \n+
    495 }
    \n+
    \n+
    496
    \n+
    497}
    \n+
    498
    \n+
    499#endif // #ifndef DUNE_MULTIINDEX_HH
    \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:711
    \n-
    Factory for global-valued Q1 elements.
    Definition q1.hh:47
    \n-
    Q1FiniteElementFactory()
    default constructor
    Definition q1.hh:57
    \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:152
    \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:37
    \n+
    This operator+(const This &other) const
    Definition multiindex.hh:248
    \n+
    int absOMZ() const
    Definition multiindex.hh:272
    \n+
    ~MultiIndex()
    Definition multiindex.hh:86
    \n+
    This & operator-=(const This &other)
    Definition multiindex.hh:207
    \n+
    MultiIndex(int, const This &other)
    Definition multiindex.hh:59
    \n+
    static const int dimension
    Definition multiindex.hh:43
    \n+
    int absZ() const
    Definition multiindex.hh:264
    \n+
    int omz(int i) const
    Definition multiindex.hh:95
    \n+
    This & operator+=(const This &other)
    Definition multiindex.hh:184
    \n+
    bool operator==(const This &other) const
    Definition multiindex.hh:140
    \n+
    bool sameMultiIndex(const This &ind)
    Definition multiindex.hh:280
    \n+
    This & operator=(const This &other)
    Definition multiindex.hh:104
    \n+
    MultiIndex(const This &other)
    Definition multiindex.hh:73
    \n+
    This & operator*=(const F &f)
    Definition multiindex.hh:147
    \n+
    const Field & factor() const
    Definition multiindex.hh:99
    \n+
    This operator/(const F &f) const
    Definition multiindex.hh:231
    \n+
    MultiIndex(const F &f)
    Definition multiindex.hh:52
    \n+
    This & operator/=(const F &f)
    Definition multiindex.hh:155
    \n+
    This operator*(const F &f) const
    Definition multiindex.hh:225
    \n+
    void set(int d, int power=1)
    Definition multiindex.hh:259
    \n+
    This operator-(const This &other) const
    Definition multiindex.hh:253
    \n+
    int z(int i) const
    Definition multiindex.hh:91
    \n+
    MultiIndex()
    Definition multiindex.hh:45
    \n+
    MultiIndex< dim, F > Field
    Definition multiindex.hh:453
    \n+
    MultiIndex< dim, F > Field
    Definition multiindex.hh:476
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,83 +1,621 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_MULTIINDEX_HH\n+6#define DUNE_MULTIINDEX_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_\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+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-15#warning This header is deprecated\n-16\n-17namespace _\bD_\bu_\bn_\be\n-18{\n-19\n-27 template\n-_\b2_\b8 using _\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-29 [[deprecated(\"use LagrangeCubeLocalFiniteElement instead\")]]\n-30 = _\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,_\b1_\b>;\n+15namespace _\bD_\bu_\bn_\be\n+16{\n+17 /****************************************************************\n+18 * Provide a Field class which can be used in evaluation methods\n+19 * to produce MultiIndex presentation of polynomials.\n+20 ****************************************************************/\n+21 // Internal Forward Declarations\n+22 // -----------------------------\n+23\n+24 template< int dim, class Field >\n+25 class MultiIndex;\n+26\n+27 template< int dim, class Field >\n+_\b2_\b8 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+29\n+30\n 31\n-32\n+32 // MultiIndex\n+33 // ----------\n 34\n-39 template\n-_\b4_\b0 class _\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by :\n-41 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-42 LagrangeCubeLocalFiniteElement<\n-43 typename Geometry::ctype, RF, Geometry::mydimension, 1\n-44 >,\n-45 Geometry\n-46 >\n-47 {\n-48 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-49 typename Geometry::ctype, RF, Geometry::mydimension, 1\n-50 > _\bL_\bF_\bE;\n-51 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-52\n-53 static const _\bL_\bF_\bE lfe;\n-54\n-55 public:\n-_\b5_\b7 _\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-58 };\n-59\n-60 template\n-61 const typename Q1FiniteElementFactory::LFE\n-62 Q1FiniteElementFactory::lfe;\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-_\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_\bc_\bu_\bb_\be_\b._\bh_\bh\n+35 template< int dim,class Field >\n+_\b3_\b6 class _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n+37 {\n+38 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+39\n+_\b4_\b0 friend std::ostream &operator<<<> ( std::ostream &, const _\bT_\bh_\bi_\bs & );\n+41\n+42 public:\n+_\b4_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n+44\n+_\b4_\b5 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ()\n+46 : vecZ_( 0 ),\n+47 vecOMZ_( 0 ),\n+48 factor_( 1. ),\n+49 next_( 0 )\n+50 {}\n+51 template \n+_\b5_\b2 explicit _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx (const F &f)\n+53 : vecZ_( 0 ),\n+54 vecOMZ_( 0 ),\n+55 factor_( _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(f) ),\n+56 next_( 0 )\n+57 {}\n+58\n+_\b5_\b9 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( int, const _\bT_\bh_\bi_\bs &other )\n+60 : vecZ_( other.vecOMZ_ ),\n+61 vecOMZ_( other.vecZ_ ),\n+62 factor_( other.factor_ )\n+63 {\n+64 assert(!other.next_);\n+65 if (other.next_)\n+66 {\n+67 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n+68 }\n+69 else\n+70 next_ = 0;\n+71 }\n+72\n+_\b7_\b3 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( const _\bT_\bh_\bi_\bs &other )\n+74 : vecZ_( other.vecZ_ ),\n+75 vecOMZ_( other.vecOMZ_ ),\n+76 factor_( other.factor_ )\n+77 {\n+78 if (other.next_)\n+79 {\n+80 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n+81 }\n+82 else\n+83 next_ = 0;\n+84 }\n+85\n+_\b8_\b6 _\b~_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx()\n+87 {\n+88 remove();\n+89 }\n+90\n+_\b9_\b1 int _\bz(int i) const\n+92 {\n+93 return vecZ_[i];\n+94 }\n+_\b9_\b5 int _\bo_\bm_\bz(int i) const\n+96 {\n+97 return vecOMZ_[i];\n+98 }\n+_\b9_\b9 const Field &_\bf_\ba_\bc_\bt_\bo_\br() const\n+100 {\n+101 return factor_;\n+102 }\n+103\n+_\b1_\b0_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+105 {\n+106 remove();\n+107 vecZ_ = other.vecZ_;\n+108 vecOMZ_ = other.vecOMZ_;\n+109 factor_ = other.factor_;\n+110 if (other.next_)\n+111 next_ = new _\bT_\bh_\bi_\bs(*(other.next_));\n+112 return *this;\n+113 }\n+_\b1_\b1_\b4 _\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+115 {\n+116 remove();\n+117 vecZ_ = 0;\n+118 vecOMZ_ = 0;\n+119 factor_ = 0.;\n+120 return *this;\n+121 }\n+_\b1_\b2_\b2 _\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+123 {\n+124 remove();\n+125 vecZ_ = 0;\n+126 vecOMZ_ = 0;\n+127 factor_ = 1.;\n+128 return *this;\n+129 }\n+130 template \n+_\b1_\b3_\b1 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const F &f )\n+132 {\n+133 remove();\n+134 vecZ_ = 0;\n+135 vecOMZ_ = 0;\n+136 factor_ = field_cast(f);\n+137 return *this;\n+138 }\n+139\n+_\b1_\b4_\b0 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b (const _\bT_\bh_\bi_\bs &other) const\n+141 {\n+142 assert(!next_ && !other.next_);\n+143 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ &&\n+factor_==other.factor_);\n+144 }\n+145\n+146 template \n+_\b1_\b4_\b7 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const F &f )\n+148 {\n+149 factor_ *= field_cast(f);\n+150 if (next_)\n+151 (*next_) *= f;\n+152 return *this;\n+153 }\n+154 template \n+_\b1_\b5_\b5 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=_\b ( const F &f )\n+156 {\n+157 factor_ /= field_cast(f);\n+158 if (next_)\n+159 (*next_) /= f;\n+160 return *this;\n+161 }\n+162\n+_\b1_\b6_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+164 {\n+165 assert(!other.next_);\n+166 vecZ_ += other.vecZ_;\n+167 vecOMZ_ += other.vecOMZ_;\n+168 factor_ *= other.factor_;\n+169 if (next_)\n+170 (*next_) *= other;\n+171 return *this;\n+172 }\n+_\b1_\b7_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+174 {\n+175 assert(!other.next_);\n+176 vecZ_ -= other.vecZ_;\n+177 vecOMZ_ -= other.vecOMZ_;\n+178 factor_ /= other.factor_;\n+179 if (next_)\n+180 (*next_) /= other;\n+181 return *this;\n+182 }\n+183\n+_\b1_\b8_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+185 {\n+186 assert(!other.next_);\n+187 if (std::abs(other.factor_)<1e-10)\n+188 return *this;\n+189 if (std::abs(factor_)<1e-10)\n+190 {\n+191 *this = other;\n+192 return *this;\n+193 }\n+194 if (!_\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(other))\n+195 {\n+196 if (next_)\n+197 (*next_)+=other;\n+198 else\n+199 {\n+200 next_ = new _\bT_\bh_\bi_\bs(other);\n+201 }\n+202 }\n+203 else\n+204 factor_ += other.factor_;\n+205 return *this;\n+206 }\n+_\b2_\b0_\b7 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n+208 {\n+209 assert(!other.next_);\n+210 if (!_\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(other))\n+211 {\n+212 if (next_)\n+213 next_-=other;\n+214 else\n+215 {\n+216 next_ = new _\bT_\bh_\bi_\bs(other);\n+217 }\n+218 }\n+219 else\n+220 factor_ -= other.factor_;\n+221 return *this;\n+222 }\n+223\n+224 template \n+_\b2_\b2_\b5 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const F &f ) const\n+226 {\n+227 _\bT_\bh_\bi_\bs _\bz = *this;\n+228 return (_\bz *= f);\n+229 }\n+230 template \n+_\b2_\b3_\b1 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const F &f ) const\n+232 {\n+233 _\bT_\bh_\bi_\bs _\bz = *this;\n+234 return (_\bz /= f);\n+235 }\n+236\n+_\b2_\b3_\b7 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+238 {\n+239 _\bT_\bh_\bi_\bs _\bz = *this;\n+240 return (_\bz *= other);\n+241 }\n+_\b2_\b4_\b2 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+243 {\n+244 _\bT_\bh_\bi_\bs _\bz = *this;\n+245 return (_\bz /= other);\n+246 }\n+247\n+_\b2_\b4_\b8 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+249 {\n+250 _\bT_\bh_\bi_\bs _\bz = *this;\n+251 return (_\bz += other);\n+252 }\n+_\b2_\b5_\b3 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+254 {\n+255 _\bT_\bh_\bi_\bs _\bz = *this;\n+256 return (_\bz -= other);\n+257 }\n+258\n+_\b2_\b5_\b9 void _\bs_\be_\bt ( int d, int power = 1 )\n+260 {\n+261 vecZ_[ d ] = power;\n+262 }\n+263\n+_\b2_\b6_\b4 int _\ba_\bb_\bs_\bZ () const\n+265 {\n+266 int ret = 0;\n+267 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+268 ret += std::abs( vecZ_[ i ] );\n+269 return ret;\n+270 }\n+271\n+_\b2_\b7_\b2 int _\ba_\bb_\bs_\bO_\bM_\bZ() const\n+273 {\n+274 int ret = 0;\n+275 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+276 ret += std::abs( vecOMZ_[ i ] );\n+277 return ret;\n+278 }\n+279\n+_\b2_\b8_\b0 bool _\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(const _\bT_\bh_\bi_\bs &ind)\n+281 {\n+282 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n+283 {\n+284 if ( vecZ_[i] != ind.vecZ_[i] ||\n+285 vecOMZ_[i] != vecOMZ_[i] )\n+286 return false;\n+287 }\n+288 return true;\n+289 }\n+290\n+291 private:\n+292 void remove()\n+293 {\n+294 if (next_)\n+295 {\n+296 next_->remove();\n+297 delete next_;\n+298 next_ = 0;\n+299 }\n+300 }\n+301\n+302 typedef Dune::FieldVector< int, dimension > Vector;\n+303\n+304 Vector vecZ_;\n+305 Vector vecOMZ_;\n+306 Field factor_;\n+307\n+308 This *next_;\n+309 };\n+310\n+311 template \n+_\b3_\b1_\b2 _\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+313 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n+314 {\n+315 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> z = m;\n+316 return (z *= f);\n+317 }\n+318 template \n+_\b3_\b1_\b9 _\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+320 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n+321 {\n+322 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> z = m;\n+323 return (z /= f);\n+324 }\n+325\n+326 template \n+_\b3_\b2_\b7 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+328 for (unsigned int r=0; r\n+_\b3_\b3_\b8 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n+339 const std::vector,dimR> >& y) {\n+340 out << \"\\\\begin{eqnarray*}\" << std::endl;\n+341 for (unsigned int k=0; k\n+_\b3_\b5_\b6 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n+357 const std::vector,dimR1,dimR2> >& y) {\n+358 out << \"\\\\begin{eqnarray*}\" << std::endl;\n+359 for (unsigned int k=0; k\n+_\b3_\b7_\b6 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+377 {\n+378 bool first = true;\n+379 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b> *m = &val;\n+380 do {\n+381 if (m->_\ba_\bb_\bs_\bZ()==0 && std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br())<1e-10)\n+382 {\n+383 if (!m->next_ || !first)\n+384 {\n+385 out << \"0\";\n+386 break;\n+387 }\n+388 else {\n+389 m = m->next_;\n+390 continue;\n+391 }\n+392 }\n+393 if (m->_\bf_\ba_\bc_\bt_\bo_\br()>0 && !first)\n+394 out << \" + \";\n+395 else if (m->_\bf_\ba_\bc_\bt_\bo_\br()<0)\n+396 if (!first)\n+397 out << \" - \";\n+398 else\n+399 out << \"- \";\n+400 else\n+401 out << \" \";\n+402 first = false;\n+403 F f = std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br());\n+404 if (m->_\ba_\bb_\bs_\bZ()==0)\n+405 out << f;\n+406 else {\n+407 if ( std::abs(f)<1e-10)\n+408 out << 0;\n+409 else\n+410 {\n+411 F f_1(f);\n+412 f_1 -= 1.; // better Unity();\n+413 if ( std::abs(f_1)>1e-10)\n+414 out << f;\n+415 int absVal = 0;\n+416 for (int i=0; ivecZ_[i]==0)\n+418 continue;\n+419 else if (m->vecZ_[i]==1)\n+420 out << char('a'+i);\n+421 else if (m->vecZ_[i]>0)\n+422 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n+423 else if (m->vecZ_[i]<0)\n+424 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n+425 absVal += m->vecZ_[i];\n+426 if (absValabsZ()) out << \"\";\n+427 }\n+428 }\n+429 }\n+430 /*\n+431 if (mi.absOMZ()>0) {\n+432 for (int i=0;i<=mi.absZ();++i) {\n+433 if (mi.vecOMZ_[i]==0)\n+434 continue;\n+435 else if (mi.vecOMZ_[i]==1)\n+436 out << (1-char('a'+i));\n+437 else if (mi.vecOMZ_[i]>0)\n+438 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n+439 else if (mi.vecOMZ_[i]<0)\n+440 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n+441 if (i==mi.absZ()+1) out << \"*\";\n+442 }\n+443 }\n+444 */\n+445 m = m->next_;\n+446 } while (m);\n+447 return out;\n+448 }\n+449\n+450 template< int dim, class F>\n+_\b4_\b5_\b1 struct _\bU_\bn_\bi_\bt_\by< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, F > >\n+452 {\n+_\b4_\b5_\b3 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+454\n+_\b4_\b5_\b5 operator _\bF_\bi_\be_\bl_\bd () const\n+456 {\n+457 return _\bF_\bi_\be_\bl_\bd();\n+458 }\n+459\n+_\b4_\b6_\b0 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n+461 {\n+462 return _\bF_\bi_\be_\bl_\bd( 1, other );\n+463 }\n+464\n+_\b4_\b6_\b5 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n+466 {\n+467 return _\bF_\bi_\be_\bl_\bd() / other;\n+468 }\n+469 };\n+470\n+471\n+472\n+473 template< int dim, class F >\n+_\b4_\b7_\b4 struct _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,F > >\n+475 {\n+_\b4_\b7_\b6 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+477\n+478 // zero does not acutally exist\n+_\b4_\b7_\b9 operator _\bF_\bi_\be_\bl_\bd ()\n+480 {\n+481 return _\bF_\bi_\be_\bl_\bd(0);\n+482 }\n+483 };\n+484\n+485 template< int dim, class Field >\n+_\b4_\b8_\b6 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+487 {\n+488 return true;\n+489 }\n+490\n+491 template< int dim, class Field >\n+_\b4_\b9_\b2 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+493 {\n+494 return true;\n+495 }\n+496\n+497}\n+498\n+499#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:_\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:711\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:47\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:57\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:152\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:37\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:248\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:272\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:86\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:207\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:59\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:43\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:264\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:95\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:184\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:140\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:280\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:104\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:73\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:147\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:99\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:231\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:52\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:155\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:225\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:259\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:253\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:91\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:45\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:453\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:476\n ===============================================================================\n 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: pqkfactory.hh File Reference\n+dune-localfunctions: basismatrix.hh File Reference\n \n \n \n \n \n \n \n@@ -65,49 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    pqkfactory.hh File Reference
    \n+
    basismatrix.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+
    #include <fstream>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/localfunctions/utility/lfematrix.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-\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::BasisMatrixBase< PreBasis, Interpolation, Field >
     
    struct  Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, 3, k >
     Factory that only creates dimension specific local finite elements. More...
    struct  Dune::BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >
     
    struct  Dune::PQkLocalFiniteElementFactory< D, R, dim, k >
     Factory to create any kind of Pk/Qk like element wrapped for the virtual interface. More...
    struct  Dune::BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >
     
    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...
    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,41 +1,35 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+basismatrix.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/_\bl_\bf_\be_\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/_\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-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+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/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: pqkfactory.hh Source File\n+dune-localfunctions: basismatrix.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,286 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    pqkfactory.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 (C) 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_BASISMATRIX_HH
    \n+
    6#define DUNE_BASISMATRIX_HH
    \n
    7
    \n-
    8#include <map>
    \n-
    9
    \n-
    10#include <dune/geometry/type.hh>
    \n-
    11
    \n-\n-\n+
    8#include <fstream>
    \n+
    9#include <dune/common/exceptions.hh>
    \n+
    10
    \n+\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-
    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+
    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+
    29 template< class PreBasis, class Interpolation,
    \n+
    30 class Field >
    \n+
    \n+
    31 struct BasisMatrixBase : public LFEMatrix<Field>
    \n+
    32 {
    \n+\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
    \n+
    41 if ( !Matrix::invert() )
    \n+
    42 {
    \n+
    43 DUNE_THROW(MathError, "While computing basis a singular matrix was constructed!");
    \n+
    44 }
    \n+
    45 }
    \n+
    \n+
    \n+
    46 unsigned int cols () const
    \n+
    47 {
    \n+
    48 return cols_;
    \n+
    49 }
    \n+
    \n+
    \n+
    50 unsigned int rows () const
    \n+
    51 {
    \n+
    52 return Matrix::rows();
    \n+
    53 }
    \n+
    \n+
    54 private:
    \n+
    55 unsigned int cols_;
    \n+
    56 };
    \n+
    \n+
    57
    \n+
    58 template< GeometryType::Id geometryId, class F,
    \n+
    59 class Interpolation,
    \n+
    60 class Field >
    \n+
    \n+
    61 struct BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n+
    62 : public BasisMatrixBase< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n+
    63 {
    \n+\n+\n+
    66 typedef typename Base::Matrix Matrix;
    \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-
    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+
    68 BasisMatrix( const PreBasis& preBasis,
    \n+
    69 const Interpolation& localInterpolation )
    \n+
    70 : Base(preBasis, localInterpolation)
    \n+
    71 {}
    \n+
    \n+
    72 template <class Vector>
    \n+
    \n+
    73 void row( const unsigned int row, Vector &vec ) const
    \n+
    74 {
    \n+
    75 const unsigned int N = Matrix::rows();
    \n+
    76 assert( Matrix::cols() == N && vec.size() == N );
    \n+
    77 // note: that the transposed matrix is computed,
    \n+
    78 // and is square
    \n+
    79 for (unsigned int i=0; i<N; ++i)
    \n+
    80 field_cast(Matrix::operator()(i,row),vec[i]);
    \n+
    81 }
    \n+
    \n+
    82 };
    \n+
    \n+
    83 template< int dim, class F,
    \n+
    84 class Interpolation,
    \n+
    85 class Field >
    \n+
    \n+
    86 struct BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n+
    87 : public BasisMatrixBase< const VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n+
    88 {
    \n+\n+\n+
    91 typedef typename Base::Matrix Matrix;
    \n+
    92
    \n+
    \n+
    93 BasisMatrix( const PreBasis& preBasis,
    \n+
    94 const Interpolation& localInterpolation )
    \n+
    95 : Base(preBasis, localInterpolation)
    \n+
    96 {}
    \n+
    \n+
    97 template <class Vector>
    \n+
    \n+
    98 void row( const unsigned int row, Vector &vec ) const
    \n+
    99 {
    \n+
    100 const unsigned int N = Matrix::rows();
    \n+
    101 assert( Matrix::cols() == N && vec.size() == N );
    \n+
    102 // note: that the transposed matrix is computed,
    \n+
    103 // and is square
    \n+
    104 for (unsigned int i=0; i<N; ++i)
    \n+
    105 field_cast(Matrix::operator()(i,row),vec[i]);
    \n+
    106 }
    \n+
    \n+
    107 };
    \n+
    \n+
    108 template< class Eval, class CM, class D, class R,
    \n+
    109 class Interpolation,
    \n+
    110 class Field >
    \n
    \n-\n-
    112 {
    \n-
    113 protected:
    \n-\n-\n-
    116 typedef typename std::map<GeometryType,FE*> FEMap;
    \n+
    111 struct BasisMatrix< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n+
    112 : public BasisMatrixBase< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n+
    113 {
    \n+\n+\n+
    116 typedef typename Base::Matrix Matrix;
    \n
    117
    \n-
    118 public:
    \n-\n-
    121
    \n-\n-
    124
    \n-
    \n-\n-
    127 {
    \n-
    128 typename FEMap::iterator it = other.cache_.begin();
    \n-
    129 typename FEMap::iterator end = other.cache_.end();
    \n-
    130 for(; it!=end; ++it)
    \n-
    131 cache_[it->first] = (it->second)->clone();
    \n-
    132 }
    \n-
    \n-
    133
    \n-
    \n-\n-
    135 {
    \n-
    136 typename FEMap::iterator it = cache_.begin();
    \n-
    137 typename FEMap::iterator end = cache_.end();
    \n-
    138 for(; it!=end; ++it)
    \n-
    139 delete it->second;
    \n-
    140 }
    \n-
    \n-
    141
    \n-
    \n-
    143 const FiniteElementType& get(const GeometryType& gt) const
    \n-
    144 {
    \n-
    145 typename FEMap::const_iterator it = cache_.find(gt);
    \n-
    146 if (it==cache_.end())
    \n-
    147 {
    \n-\n-
    149 if (fe==0)
    \n-
    150 DUNE_THROW(Dune::NotImplemented,"No Pk/Qk like local finite element available for geometry type " << gt << " and order " << k);
    \n+
    \n+
    118 BasisMatrix( const PreBasis& preBasis,
    \n+
    119 const Interpolation& localInterpolation )
    \n+
    120 : Base(preBasis, localInterpolation),
    \n+
    121 preBasis_(preBasis)
    \n+
    122 {}
    \n+
    \n+
    \n+
    123 unsigned int cols() const
    \n+
    124 {
    \n+
    125 return preBasis_.matrix().baseSize() ;
    \n+
    126 }
    \n+
    \n+
    127 template <class Vector>
    \n+
    \n+
    128 void row( const unsigned int row, Vector &vec ) const
    \n+
    129 {
    \n+
    130 assert( Matrix::rows() == Matrix::cols() );
    \n+
    131 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n+
    132 assert( Matrix::cols() == preBasis_.size() );
    \n+
    133 for (unsigned int j=0; j<Matrix::cols(); ++j)
    \n+
    134 vec[j] = 0;
    \n+
    135 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n+
    136 preBasis_.matrix().
    \n+
    137 addRow(i,Base::Matrix::operator()(i,row),vec);
    \n+
    138 }
    \n+
    \n+
    139 private:
    \n+
    140 const PreBasis& preBasis_;
    \n+
    141 };
    \n+
    \n+
    142 template< class Eval, class CM,
    \n+
    143 class Interpolation,
    \n+
    144 class Field >
    \n+
    \n+
    145 struct BasisMatrix< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n+
    146 : public BasisMatrixBase< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n+
    147 {
    \n+\n+\n+
    150 typedef typename Base::Matrix Matrix;
    \n
    151
    \n-
    152 cache_[gt] = fe;
    \n-
    153 return *fe;
    \n-
    154 }
    \n-
    155 return *(it->second);
    \n-
    156 }
    \n-
    \n-
    157
    \n-
    158 protected:
    \n-
    159 mutable FEMap cache_;
    \n-
    160
    \n-
    161 };
    \n-
    \n-
    162
    \n-
    163}
    \n-
    164
    \n-
    165#endif
    \n-\n-\n-\n-\n-\n-\n-\n+
    \n+
    152 BasisMatrix( const PreBasis& preBasis,
    \n+
    153 const Interpolation& localInterpolation )
    \n+
    154 : Base(preBasis, localInterpolation),
    \n+
    155 preBasis_(preBasis)
    \n+
    156 {}
    \n+
    \n+
    \n+
    157 unsigned int cols() const
    \n+
    158 {
    \n+
    159 return preBasis_.matrix().baseSize() ;
    \n+
    160 }
    \n+
    \n+
    \n+
    161 unsigned int rows () const
    \n+
    162 {
    \n+
    163 assert( Matrix::rows() == preBasis_.matrix().size() );
    \n+
    164 return preBasis_.matrix().size()*CM::blockSize ;
    \n+
    165 }
    \n+
    \n+
    166 template <class Vector>
    \n+
    \n+
    167 void row( const unsigned int row, Vector &vec ) const
    \n+
    168 {
    \n+
    169 unsigned int r = row / CM::blockSize;
    \n+
    170 assert( r < Matrix::rows() );
    \n+
    171 assert( Matrix::rows() == Matrix::cols() );
    \n+
    172 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n+
    173 assert( Matrix::cols() == preBasis_.size() );
    \n+
    174 for (unsigned int j=0; j<vec.size(); ++j)
    \n+
    175 vec[j] = 0;
    \n+
    176 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n+
    177 preBasis_.matrix().
    \n+
    178 addRow(i*CM::blockSize+row%CM::blockSize,Base::Matrix::operator()(i,r),vec);
    \n+
    179 }
    \n+
    \n+
    180 private:
    \n+
    181 const PreBasis& preBasis_;
    \n+
    182 };
    \n+
    \n+
    183}
    \n+
    184
    \n+
    185#endif // DUNE_BASISMATRIX_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:286
    \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:711
    \n-
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:652
    \n-
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:812
    \n-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \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:112
    \n-
    P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:114
    \n-
    LocalFiniteElementVirtualInterface< T > FE
    Definition pqkfactory.hh:115
    \n-
    PQkLocalFiniteElementCache()
    Default constructor.
    Definition pqkfactory.hh:123
    \n-
    FE FiniteElementType
    Type of the finite elements stored in this cache.
    Definition pqkfactory.hh:120
    \n-
    std::map< GeometryType, FE * > FEMap
    Definition pqkfactory.hh:116
    \n-
    const FiniteElementType & get(const GeometryType &gt) const
    Get local finite element for given GeometryType.
    Definition pqkfactory.hh:143
    \n-
    FEMap cache_
    Definition pqkfactory.hh:159
    \n-
    ~PQkLocalFiniteElementCache()
    Definition pqkfactory.hh:134
    \n-
    PQkLocalFiniteElementCache(const PQkLocalFiniteElementCache &other)
    Copy constructor.
    Definition pqkfactory.hh:126
    \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:46
    \n+
    unsigned int rows() const
    Definition basismatrix.hh:50
    \n+
    BasisMatrixBase(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:35
    \n+
    LFEMatrix< Field > Matrix
    Definition basismatrix.hh:33
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:73
    \n+
    const MonomialBasis< geometryId, F > PreBasis
    Definition basismatrix.hh:64
    \n+\n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:68
    \n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:65
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:98
    \n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:90
    \n+\n+
    const VirtualMonomialBasis< dim, F > PreBasis
    Definition basismatrix.hh:89
    \n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:93
    \n+\n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:115
    \n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:118
    \n+\n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:128
    \n+
    const PolynomialBasis< Eval, CM, D, R > PreBasis
    Definition basismatrix.hh:114
    \n+
    const PolynomialBasisWithMatrix< Eval, CM > PreBasis
    Definition basismatrix.hh:148
    \n+
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:149
    \n+\n+\n+
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:152
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:167
    \n+\n+
    Definition lfematrix.hh:18
    \n+
    unsigned int rows() const
    Definition lfematrix.hh:58
    \n+
    bool invert()
    Definition lfematrix.hh:89
    \n+
    Field Field
    Definition lfematrix.hh:24
    \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,263 +1,344 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BASISMATRIX_HH\n+6#define DUNE_BASISMATRIX_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/_\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+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/_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\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#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 <_\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+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+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 _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n+32 {\n+_\b3_\b3 typedef _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b> _\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\n+41 if ( !_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt() )\n+42 {\n+43 DUNE_THROW(MathError, \"While computing basis a singular matrix was\n+constructed!\");\n+44 }\n+45 }\n+_\b4_\b6 unsigned int _\bc_\bo_\bl_\bs () const\n+47 {\n+48 return cols_;\n+49 }\n+_\b5_\b0 unsigned int _\br_\bo_\bw_\bs () const\n+51 {\n+52 return _\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs();\n+53 }\n+54 private:\n+55 unsigned int cols_;\n+56 };\n+57\n+58 template< GeometryType::Id geometryId, class F,\n+59 class Interpolation,\n+60 class Field >\n+_\b6_\b1 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+_\bF_\bi_\be_\bl_\bd >\n+62 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const MonomialBasis< geometryId, F >,\n+Interpolation, Field >\n+63 {\n+_\b6_\b4 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_\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+_\b6_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\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+_\b6_\b8 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+69 const Interpolation& localInterpolation )\n+70 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n+71 {}\n+72 template \n+_\b7_\b3 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\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-98\n-99\n-110 template\n-_\b1_\b1_\b1 class _\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-112 {\n-113 protected:\n-_\b1_\b1_\b4 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_\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_\b> _\bF_\bE;\n-_\b1_\b1_\b6 typedef typename std::map _\bF_\bE_\bM_\ba_\bp;\n+75 const unsigned int N = Matrix::rows();\n+76 assert( Matrix::cols() == N && vec.size() == N );\n+77 // note: that the transposed matrix is computed,\n+78 // and is square\n+79 for (unsigned int i=0; i\n+_\b8_\b6 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, _\bF_\bi_\be_\bl_\bd >\n+87 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const VirtualMonomialBasis< dim, F >,\n+Interpolation, Field >\n+88 {\n+_\b8_\b9 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+_\b9_\b0 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+_\b9_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n+92\n+_\b9_\b3 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+94 const Interpolation& localInterpolation )\n+95 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n+96 {}\n+97 template \n+_\b9_\b8 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+99 {\n+100 const unsigned int N = Matrix::rows();\n+101 assert( Matrix::cols() == N && vec.size() == N );\n+102 // note: that the transposed matrix is computed,\n+103 // and is square\n+104 for (unsigned int i=0; i\n+_\b1_\b1_\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, Interpolation,\n+_\bF_\bi_\be_\bl_\bd >\n+112 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasis,\n+Interpolation, Field >\n+113 {\n+_\b1_\b1_\b4 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_\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_\b1_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n 117\n-118 public:\n-_\b1_\b2_\b0 typedef _\bF_\bE _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n-121\n-_\b1_\b2_\b3 _\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-124\n-_\b1_\b2_\b6 _\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-127 {\n-128 typename FEMap::iterator it = other._\bc_\ba_\bc_\bh_\be_\b_.begin();\n-129 typename FEMap::iterator end = other._\bc_\ba_\bc_\bh_\be_\b_.end();\n-130 for(; it!=end; ++it)\n-131 _\bc_\ba_\bc_\bh_\be_\b_[it->first] = (it->second)->clone();\n-132 }\n-133\n-_\b1_\b3_\b4 _\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-135 {\n-136 typename FEMap::iterator it = _\bc_\ba_\bc_\bh_\be_\b_.begin();\n-137 typename FEMap::iterator end = _\bc_\ba_\bc_\bh_\be_\b_.end();\n-138 for(; it!=end; ++it)\n-139 delete it->second;\n-140 }\n-141\n-_\b1_\b4_\b3 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-144 {\n-145 typename FEMap::const_iterator it = _\bc_\ba_\bc_\bh_\be_\b_.find(gt);\n-146 if (it==_\bc_\ba_\bc_\bh_\be_\b_.end())\n+_\b1_\b1_\b8 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+119 const Interpolation& localInterpolation )\n+120 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n+121 preBasis_(preBasis)\n+122 {}\n+_\b1_\b2_\b3 unsigned int _\bc_\bo_\bl_\bs() const\n+124 {\n+125 return preBasis_.matrix().baseSize() ;\n+126 }\n+127 template \n+_\b1_\b2_\b8 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+129 {\n+130 assert( Matrix::rows() == Matrix::cols() );\n+131 assert( vec.size() == preBasis_.matrix().baseSize() );\n+132 assert( Matrix::cols() == preBasis_.size() );\n+133 for (unsigned int j=0; j\n+_\b1_\b4_\b5 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, _\bF_\bi_\be_\bl_\bd >\n+146 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasisWithMatrix,\n+Interpolation, Field >\n 147 {\n-148 _\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-149 if (fe==0)\n-150 DUNE_THROW(Dune::NotImplemented,\"No Pk/Qk like local finite element\n-available for geometry type \" << gt << \" and order \" << k);\n+_\b1_\b4_\b8 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_\b9 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_\b5_\b0 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n 151\n-152 _\bc_\ba_\bc_\bh_\be_\b_[gt] = fe;\n-153 return *fe;\n-154 }\n-155 return *(it->second);\n-156 }\n-157\n-158 protected:\n-_\b1_\b5_\b9 mutable _\bF_\bE_\bM_\ba_\bp _\bc_\ba_\bc_\bh_\be_\b_;\n-160\n-161 };\n-162\n-163}\n-164\n-165#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_\bp_\br_\bi_\bs_\bm_\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_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n+_\b1_\b5_\b2 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n+153 const Interpolation& localInterpolation )\n+154 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n+155 preBasis_(preBasis)\n+156 {}\n+_\b1_\b5_\b7 unsigned int _\bc_\bo_\bl_\bs() const\n+158 {\n+159 return preBasis_.matrix().baseSize() ;\n+160 }\n+_\b1_\b6_\b1 unsigned int _\br_\bo_\bw_\bs () const\n+162 {\n+163 assert( Matrix::rows() == preBasis_.matrix().size() );\n+164 return preBasis_.matrix().size()*CM::blockSize ;\n+165 }\n+166 template \n+_\b1_\b6_\b7 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n+168 {\n+169 unsigned int r = row / CM::blockSize;\n+170 assert( r < Matrix::rows() );\n+171 assert( Matrix::rows() == Matrix::cols() );\n+172 assert( vec.size() == preBasis_.matrix().baseSize() );\n+173 assert( Matrix::cols() == preBasis_.size() );\n+174 for (unsigned int j=0; j::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:112\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: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:_\bF_\bE\n-LocalFiniteElementVirtualInterface< T > FE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:115\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:123\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:120\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: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:_\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:143\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:159\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:134\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:126\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: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:_\br_\bo_\bw_\bs\n+unsigned int rows() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:50\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_\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n+LFEMatrix< 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_\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:73\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: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:_\bM_\ba_\bt_\br_\bi_\bx\n+Base::Matrix Matrix\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:66\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:68\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:65\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:98\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:90\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:91\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: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 _\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:93\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:116\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:115\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:118\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:123\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:128\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: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_\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: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:_\bB_\ba_\bs_\be\n+BasisMatrixBase< PreBasis, Interpolation, Field > Base\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:149\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:161\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:150\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:152\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:167\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:157\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 _\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 lfematrix.hh:58\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\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:89\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n+Field Field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:24\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/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: pk1d.hh File Reference\n+dune-localfunctions: dualmortarbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,56 +65,25 @@\n \n \n \n \n \n \n \n
    \n- \n-
    pk1d.hh File Reference
    \n+
    dualmortarbasis.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-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-Typedefs

    template<class D , class R , unsigned int k>
    using Dune::Pk1DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 1, k >
     Lagrange finite element on the unit interval with arbitrary compile-time order.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,36 +1,12 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 | _\bT_\by_\bp_\be_\bd_\be_\bf_\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+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:_\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-\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:_\bP_\bk_\b1_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n- 1, k >\n-\u00a0 Lagrange finite element on the unit interval with arbitrary compile-time\n- 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/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: pk1d.hh Source File\n+dune-localfunctions: dualmortarbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,152 +70,34 @@\n
    \n \n \n \n \n \n \n
    \n-
    pk1d.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 (C) 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_DUALMORTARBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9
    \n-
    10#include <dune/geometry/type.hh>
    \n-
    11
    \n-\n-\n-\n-
    15
    \n-
    16#warning This header is deprecated
    \n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \n-
    20
    \n-
    25 template<class D, class R, unsigned int k>
    \n-\n-
    27 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n-\n-
    29
    \n-
    30
    \n-
    32
    \n-
    39 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-
    41 typedef typename Geometry::ctype DF;
    \n-
    42 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,1,k> LocalBasis;
    \n-
    43 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \n-
    44
    \n-
    45 public:
    \n-
    \n-
    49 struct Traits {
    \n-\n-\n-
    52 LocalInterpolation,
    \n-
    53 typename Basis::Traits
    \n-\n-
    55 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> Coefficients;
    \n-
    56 };
    \n-
    \n-
    57
    \n-
    58 private:
    \n-
    59 static const GeometryType gt;
    \n-
    60 static const LocalBasis localBasis;
    \n-
    61 static const LocalInterpolation localInterpolation;
    \n-
    62
    \n-
    63 typename Traits::Basis basis_;
    \n-
    64 typename Traits::Interpolation interpolation_;
    \n-
    65 typename Traits::Coefficients coefficients_;
    \n-
    66
    \n-
    67 public:
    \n-
    69
    \n-
    82 template<class VertexOrder>
    \n-
    \n-
    83 Pk1DFiniteElement(const Geometry &geometry,
    \n-
    84 const VertexOrder& vertexOrder) :
    \n-
    85 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n-
    86 coefficients_(vertexOrder.begin(0, 0))
    \n-
    87 { }
    \n-
    \n-
    88
    \n-
    89 const typename Traits::Basis& basis() const { return basis_; }
    \n-
    \n-
    90 const typename Traits::Interpolation& interpolation() const
    \n-
    91 { return interpolation_; }
    \n-
    \n-
    \n-
    92 const typename Traits::Coefficients& coefficients() const
    \n-
    93 { return coefficients_; }
    \n-
    \n-
    94 const GeometryType &type() const { return gt; }
    \n-
    95 };
    \n-
    \n-
    96
    \n-
    97 template<class Geometry, class RF, std::size_t k>
    \n-
    98 const GeometryType
    \n-
    99 Pk1DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n-
    100
    \n-
    101 template<class Geometry, class RF, std::size_t k>
    \n-
    102 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalBasis
    \n-
    103 Pk1DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n-
    104
    \n-
    105 template<class Geometry, class RF, std::size_t k>
    \n-
    106 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n-
    107 Pk1DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n-
    108 LocalInterpolation();
    \n-
    109
    \n-
    111
    \n-
    121 template<class Geometry, class RF, std::size_t k>
    \n-
    \n-\n-\n-
    124
    \n-
    126
    \n-
    140 template<class VertexOrder>
    \n-
    \n-
    141 const FiniteElement make(const Geometry& geometry,
    \n-
    142 const VertexOrder& vertexOrder)
    \n-
    143 { return FiniteElement(geometry, vertexOrder); }
    \n-
    \n-
    144 };
    \n-
    \n-
    145}
    \n-
    146
    \n-
    147#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-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n-
    Langrange finite element of arbitrary order on triangles.
    Definition pk1d.hh:40
    \n-
    Pk1DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk1DFiniteElement
    Definition pk1d.hh:83
    \n-
    const Traits::Basis & basis() const
    Definition pk1d.hh:89
    \n-
    const GeometryType & type() const
    Definition pk1d.hh:94
    \n-
    const Traits::Coefficients & coefficients() const
    Definition pk1d.hh:92
    \n-
    const Traits::Interpolation & interpolation() const
    Definition pk1d.hh:90
    \n-
    Definition pk1d.hh:49
    \n-
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk1d.hh:50
    \n-
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk1d.hh:54
    \n-
    Impl::LagrangeSimplexLocalCoefficients< 1, k > Coefficients
    Definition pk1d.hh:55
    \n-
    Factory for Pk1DFiniteElement objects.
    Definition pk1d.hh:122
    \n-
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk1DFiniteElementFactory
    Definition pk1d.hh:141
    \n-
    Pk1DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk1d.hh:123
    \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,169 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_DUALMORTARBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_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-16#warning This header is deprecated\n-17\n-18namespace _\bD_\bu_\bn_\be\n-19{\n-20\n-25 template\n-_\b2_\b6 using _\bP_\bk_\b1_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n-28 = _\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,_\b1_\b,_\bk_\b>;\n-29\n-30\n-32\n-39 template\n-_\b4_\b0 class _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n-41 typedef typename Geometry::ctype DF;\n-42 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n-43 typedef Impl::LagrangeSimplexLocalInterpolation\n-LocalInterpolation;\n-44\n-45 public:\n-_\b4_\b9 struct _\bT_\br_\ba_\bi_\bt_\bs {\n-_\b5_\b0 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-51 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-52 LocalInterpolation,\n-53 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n-_\b5_\b4 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n-_\b5_\b5 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n-56 };\n-57\n-58 private:\n-59 static const GeometryType gt;\n-60 static const LocalBasis localBasis;\n-61 static const LocalInterpolation localInterpolation;\n-62\n-63 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n-64 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n-65 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n-66\n-67 public:\n-69\n-82 template\n-_\b8_\b3 _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n-84 const VertexOrder& vertexOrder) :\n-85 basis_(localBasis, geometry), interpolation_(localInterpolation),\n-86 coefficients_(vertexOrder.begin(0, 0))\n-87 { }\n-88\n-_\b8_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\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_\b2 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-93 { return coefficients_; }\n-_\b9_\b4 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n-95 };\n-96\n-97 template\n-98 const GeometryType\n-99 Pk1DFiniteElement::gt(GeometryTypes::simplex(2));\n-100\n-101 template\n-102 const typename Pk1DFiniteElement::LocalBasis\n-103 Pk1DFiniteElement::localBasis = LocalBasis();\n-104\n-105 template\n-106 const typename Pk1DFiniteElement::LocalInterpolation\n-107 Pk1DFiniteElement::localInterpolation =\n-108 LocalInterpolation();\n-109\n-111\n-121 template\n-_\b1_\b2_\b2 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_\b2_\b3 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-124\n-126\n-140 template\n-_\b1_\b4_\b1 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n-142 const VertexOrder& vertexOrder)\n-143 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n-144 };\n-145}\n-146\n-147#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-_\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:_\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:_\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:838\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:40\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: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:_\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:89\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:94\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:92\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:90\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:49\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:50\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:54\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:55\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:122\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:141\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:123\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/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: pyramidp1.hh File Reference\n+dune-localfunctions: hierarchical.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,31 @@\n \n \n \n \n \n \n \n
    \n- \n-
    pyramidp1.hh File Reference
    \n+
    hierarchical.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangepyramid.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-Namespaces

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

    \n-Typedefs

    template<class D , class R >
    using Dune::PyramidP1LocalFiniteElement = LagrangePyramidLocalFiniteElement< D, R, 1 >
     First-order Lagrangian finite element on a three-dimensional pyramid.
     
    \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,22 +1,18 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-pyramidp1.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/_\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+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-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:_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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- D, R, 1 >\n-\u00a0 First-order Lagrangian finite element on a three-dimensional pyramid.\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/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: pyramidp1.hh Source File\n+dune-localfunctions: hierarchical.hh Source File\n \n \n \n \n \n \n \n@@ -70,47 +70,31 @@\n \n \n \n \n \n \n \n
    \n-
    pyramidp1.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 (C) 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_PYRAMID_P1_LOCALFINITEELEMENT_HH
    \n-
    7#define DUNE_PYRAMID_P1_LOCALFINITEELEMENT_HH
    \n-
    8
    \n-\n-
    10
    \n-
    11#warning This header is deprecated
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    20 template<class D, class R>
    \n-\n-
    22 [[deprecated("use LagrangePyramidLocalFiniteElement instead")]]
    \n-\n-
    24
    \n-
    25}
    \n-
    26
    \n-
    27#endif
    \n-\n-
    Definition bdfmcube.hh:18
    \n-
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:812
    \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,41 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-pyramidp1.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 (C) 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_PYRAMID_P1_LOCALFINITEELEMENT_HH\n-7#define DUNE_PYRAMID_P1_LOCALFINITEELEMENT_HH\n-8\n-9#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-10\n-11#warning This header is deprecated\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-20 template\n-_\b2_\b1 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-22 [[deprecated(\"use LagrangePyramidLocalFiniteElement instead\")]]\n-23 = _\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-24\n-25}\n-26\n-27#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\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_\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:812\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_\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_\b2_\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: pq22d.hh File Reference\n+dune-localfunctions: mimeticall.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-
    pq22d.hh File Reference
    \n+
    mimeticall.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 <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 "../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 Classes

    class  Dune::PQ22DLocalFiniteElement< D, R >
    class  Dune::MimeticLocalBasis< D, R, dim >
     
    class  Dune::MimeticLocalInterpolation< LB >
     
    class  Dune::MimeticLocalCoefficients
     ! 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.9.0\n Loading...\n Searching...\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_\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-pq22d.hh File Reference\n+mimeticall.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_\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+#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 _\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:_\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 ===============================================================================\n 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: pq22d.hh Source File\n+dune-localfunctions: mimeticall.hh Source File\n \n \n \n \n \n \n \n@@ -70,132 +70,173 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    pq22d.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 (C) 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_MIMETIC_ALL_HH
    \n+
    6#define DUNE_MIMETIC_ALL_HH
    \n
    7
    \n-
    8#include <dune/common/fmatrix.hh>
    \n+
    8#include <cstddef>
    \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+
    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+\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 return lfeVariant_.localBasis();
    \n+
    43 DUNE_THROW(Dune::Exception,"mimetic basis evaluation not available");
    \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-
    57 unsigned int size () const
    \n-
    58 {
    \n-
    59 return lfeVariant_.size();
    \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-
    62 GeometryType type () const
    \n-
    63 {
    \n-
    64 return lfeVariant_.type();
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    67 private:
    \n-
    68
    \n-
    69 LFEVariant lfeVariant_;
    \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}
    \n-
    73
    \n-
    74#endif
    \n-\n-\n-\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-\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:711
    \n-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \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+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:36
    \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,156 +1,193 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_MIMETIC_ALL_HH\n+6#define DUNE_MIMETIC_ALL_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+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_\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 42 {\n-43 return lfeVariant_._\bl_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs();\n+43 DUNE_THROW(Dune::Exception,\"mimetic basis evaluation not available\");\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_\b7 unsigned int _\bs_\bi_\bz_\be () const\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 return lfeVariant_._\bs_\bi_\bz_\be();\n+59 DUNE_THROW(Dune::Exception,\"mimetic basis partial derivative evaluation not\n+available\");\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-68\n-69 LFEVariant lfeVariant_;\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}\n-73\n-74#endif\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-_\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+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:_\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+_\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:34\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:42\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:23\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: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\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-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:711\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:838\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+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/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: lagrangelfecache.hh File Reference\n+dune-localfunctions: nedelecsimplexprebasis.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-
    lagrangelfecache.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    nedelecsimplexprebasis.hh File Reference
    \n \n
    \n-
    #include <tuple>
    \n+\n

    Go to the source code of this file.

    \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 >
     
    \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,32 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\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+ * _\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+nedelecsimplexprebasis.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+#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+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-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/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: lagrangelfecache.hh Source File\n+dune-localfunctions: nedelecsimplexprebasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,145 +70,353 @@\n
    \n \n \n \n \n \n \n
    \n-
    lagrangelfecache.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 (C) 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_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH
    \n
    7
    \n-
    8#include <tuple>
    \n+
    8#include <fstream>
    \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
    \n-
    25
    \n-
    26namespace Impl {
    \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 <unsigned int dim, class Field>
    \n+
    \n+\n+
    22 {
    \n+\n+
    24 typedef typename MBasisFactory::Object MBasis;
    \n+\n+\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+
    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
    \n+
    37 template< GeometryType::Id geometryId >
    \n+
    \n+
    38 static Object *create ( Key order )
    \n+
    39 {
    \n+
    40 /*
    \n+
    41 * The nedelec parameter begins at 1.
    \n+
    42 * This is the numbering used by J.C. Nedelec himself.
    \n+
    43 * See "Mixed Finite Elements in \\R^3" published in 1980.
    \n+
    44 *
    \n+
    45 * This construction is based on the construction of Raviart-Thomas elements.
    \n+
    46 * There the numbering starts at 0.
    \n+
    47 * Because of this we reduce the order internally by 1.
    \n+
    48 */
    \n+
    49 order--;
    \n+\n+
    51 MBasis *mbasis = MBasisFactory::template create<geometryId>(order+1);
    \n+
    52 std::remove_const_t<Object>* tmBasis = new std::remove_const_t<Object>(*mbasis);
    \n+
    53 tmBasis->fill(vecMatrix);
    \n+
    54 return tmBasis;
    \n+
    55 }
    \n+
    \n+
    56 static void release( Object *object ) { delete object; }
    \n+
    57 };
    \n+
    \n+
    58
    \n+
    59 template <GeometryType::Id geometryId, class Field>
    \n+
    \n+\n+
    61 {
    \n+
    62 static constexpr GeometryType geometry = geometryId;
    \n+
    63 static const unsigned int dim = geometry.dim();
    \n+\n+\n+
    \n+
    66 NedelecVecMatrix(std::size_t order)
    \n+
    67 {
    \n+
    68 /*
    \n+
    69 * Construction of Nedelec elements see "Mixed Finite Elements in \\R^3" by Nedelec, 1980.
    \n+
    70 *
    \n+
    71 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree $\\leq k$.
    \n+
    72 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined as
    \n+
    73 *
    \n+
    74 * \\begin{equation*}
    \n+
    75 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: <p,x>=0 \\}
    \n+
    76 * \\end{equation*}
    \n+
    77 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.
    \n+
    78 *
    \n+
    79 * For $Ned_k$ holds
    \n+
    80 * \\begin{equation*}
    \n+
    81 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.
    \n+
    82 * \\end{equation*}
    \n+
    83 *
    \n+
    84 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in $Ned$.
    \n+
    85 *
    \n+
    86 */
    \n+
    87 if( (dim!=2 && dim!=3) || !geometry.isSimplex())
    \n+
    88 DUNE_THROW(Dune::NotImplemented,"High order nedelec elements are only supported by simplices in 2d and 3d");
    \n+
    89
    \n+
    90 MIBasis basis(order+1);
    \n+
    91 FieldVector< MI, dim > x;
    \n+
    92 /*
    \n+
    93 * Init MultiIndices
    \n+
    94 * x[0]=(1,0,0) x
    \n+
    95 * x[1]=(0,1,0) y
    \n+
    96 * x[2]=(0,0,1) z
    \n+
    97 */
    \n+
    98 for( unsigned int i = 0; i < dim; ++i )
    \n+
    99 x[i].set(i,1);
    \n+
    100 std::vector< MI > val( basis.size() );
    \n
    101
    \n-
    102} // namespace Impl
    \n-
    103
    \n+
    102 // val now contains all monomials in $n$ dimensions with degree $\\leq order+1$
    \n+
    103 basis.evaluate( x, val );
    \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+
    105 col_ = basis.size();
    \n+
    106
    \n+
    107 // get $\\dim (\\P_{n,order-1})$
    \n+
    108 unsigned int notHomogen = 0;
    \n+
    109 if (order>0)
    \n+
    110 notHomogen = basis.sizes()[order-1];
    \n+
    111
    \n+
    112 // the number of basis functions for the set of homogeneous polynomials with degree $order$
    \n+
    113 unsigned int homogen = basis.sizes()[order]-notHomogen;
    \n+
    114
    \n+
    115 /*
    \n+
    116 * 2D:
    \n+
    117 * \\begin{equation*}
    \n+
    118 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}
    \n+
    119 * \\end{equation*}
    \n+
    120 *
    \n+
    121 * It gets more complicated in higher dimensions.
    \n+
    122 *
    \n+
    123 * 3D:
    \n+
    124 * \\begin{equation*}
    \n+
    125 * 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+
    126 * \\end{equation*}
    \n+
    127 *
    \n+
    128 * Note the last term. The index $n-1$ is on purpose.
    \n+
    129 * Else i.e. k=2
    \n+
    130 *
    \n+
    131 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.
    \n+
    132 *
    \n+
    133 */
    \n+
    134
    \n+
    135 /*
    \n+
    136 * compute the number of rows for the coefficient matrix
    \n+
    137 *
    \n+
    138 * row_ = dim* \\dim Ned_{order}
    \n+
    139 */
    \n+
    140 if (dim == 2)
    \n+
    141 row_ = (notHomogen*dim+homogen*(dim+1))*dim;
    \n+
    142 else if (dim==3)
    \n+
    143 {
    \n+
    144 // get dim \\P_{n-1,order-1}
    \n+
    145 int homogenTwoVariables = 0;
    \n+
    146 for( int w = notHomogen; w<notHomogen + homogen; w++)
    \n+
    147 if (val[w].z(0)==0)
    \n+
    148 homogenTwoVariables++;
    \n+
    149 row_ = (notHomogen*dim+homogen*(dim+2) + homogenTwoVariables)*dim;
    \n+
    150 }
    \n+
    151
    \n+
    152 mat_ = new Field*[row_];
    \n+
    153 int row = 0;
    \n+
    154
    \n+
    155 /* Assign the correct values for the nonhomogeneous polymonials $p\\in (\\P_{n,order-1})^dim$
    \n+
    156 * A basis function is represented by $dim$ rows.
    \n+
    157 */
    \n+
    158 for (unsigned int i=0; i<notHomogen+homogen; ++i)
    \n+
    159 {
    \n+
    160 for (unsigned int r=0; r<dim; ++r)
    \n+
    161 {
    \n+
    162 for (unsigned int rr=0; rr<dim; ++rr)
    \n+
    163 {
    \n+
    164 // init row to zero
    \n+
    165 mat_[row] = new Field[col_];
    \n+
    166 for (unsigned int j=0; j<col_; ++j)
    \n+
    167 mat_[row][j] = 0.;
    \n+
    168
    \n+
    169 if (r==rr)
    \n+
    170 mat_[row][i] = 1.;
    \n+
    171 ++row;
    \n+
    172 }
    \n+
    173 }
    \n+
    174 }
    \n+
    175
    \n+
    176 /* Assign the correct values for the homogeneous polymonials $p\\in Ned_{order} \\backslash (\\P_{n,order-1})^dim$
    \n+
    177 * A basis function is represented by $dim$ rows.
    \n+
    178 */
    \n+
    179 for (unsigned int i=0; i<homogen; ++i)
    \n+
    180 {
    \n+
    181 // get a monomial $ p \\in \\P_{n,order}\\backslash \\P_{n,order-1}$
    \n+
    182 MI xval = val[notHomogen+i];
    \n+
    183 if(dim==2)
    \n+
    184 {
    \n+
    185 for (unsigned int r=0; r<dim; ++r)
    \n+
    186 {
    \n+
    187 // init rows to zero
    \n+
    188 mat_[row+r] = new Field[col_];
    \n+
    189 for (unsigned int j=0; j<col_; ++j)
    \n+
    190 mat_[row+r][j] = 0.;
    \n+
    191 }
    \n+
    192
    \n+
    193 /* set $(-y,x)^T p$ with a homogeneous monomial $p$
    \n+
    194 *
    \n+
    195 * The loop over the monomials is needed to obtain the corresponding column index.
    \n+
    196 */
    \n+
    197 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n+
    198 {
    \n+
    199 if (val[w] == xval*x[0])
    \n+
    200 mat_[row+1][w] = 1.;
    \n+
    201 if (val[w] == xval*x[1])
    \n+
    202 mat_[row][w] = -1.;
    \n+
    203 }
    \n+
    204 row +=dim;
    \n+
    205 }
    \n+
    206 else if(dim==3)
    \n+
    207 {
    \n+
    208 int skipLastDim = xval.z(0)>0;
    \n+
    209 /*
    \n+
    210 * Init 9 rows to zero.
    \n+
    211 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets skipped ( see example for the Nedelec space in 3D )
    \n+
    212 * In this case only 6 rows get initialised.
    \n+
    213 */
    \n+
    214 for (unsigned int r=0; r<dim*(dim-skipLastDim); ++r)
    \n+
    215 {
    \n+
    216 // init rows to zero
    \n+
    217 mat_[row+r] = new Field[col_];
    \n+
    218 for (unsigned int j=0; j<col_; ++j)
    \n+
    219 mat_[row+r][j] = 0.;
    \n+
    220 }
    \n+
    221
    \n+
    222 /*
    \n+
    223 * first $dim$ rows are for (z,0,-x)
    \n+
    224 *
    \n+
    225 * second $dim$ rows are for (-y,x,0)
    \n+
    226 *
    \n+
    227 * third $dim$ rows are for (0,-z,y)
    \n+
    228 *
    \n+
    229 */
    \n+
    230 for (unsigned int r=0; r<dim - skipLastDim; ++r)
    \n+
    231 {
    \n+
    232 int index = (r+dim-1)%dim;
    \n+
    233 for (int w=homogen+notHomogen; w<val.size(); ++w)
    \n+
    234 {
    \n+
    235 if (val[w] == xval*x[index])
    \n+
    236 mat_[row+r][w] = 1.;
    \n+
    237 if (val[w] == xval*x[r])
    \n+
    238 mat_[row+index][w] = -1.;
    \n+
    239 }
    \n+
    240 row +=dim;
    \n+
    241 }
    \n+
    242
    \n+
    243 }
    \n+
    244 }
    \n+
    245 }
    \n+
    \n+
    246
    \n+
    \n+\n+
    248 {
    \n+
    249 for (unsigned int i=0; i<rows(); ++i) {
    \n+
    250 delete [] mat_[i];
    \n+
    251 }
    \n+
    252 delete [] mat_;
    \n+
    253 }
    \n+
    \n+
    254
    \n+
    \n+
    255 unsigned int cols() const {
    \n+
    256 return col_;
    \n+
    257 }
    \n+
    \n+
    258
    \n+
    \n+
    259 unsigned int rows() const {
    \n+
    260 return row_;
    \n+
    261 }
    \n+
    \n+
    262
    \n+
    263 template <class Vector>
    \n+
    \n+
    264 void row( const unsigned int row, Vector &vec ) const
    \n+
    265 {
    \n+
    266 const unsigned int N = cols();
    \n+
    267 assert( vec.size() == N );
    \n+
    268 for (unsigned int i=0; i<N; ++i)
    \n+
    269 field_cast(mat_[row][i],vec[i]);
    \n+
    270 }
    \n+
    \n+
    271
    \n+
    272 unsigned int row_,col_;
    \n+
    273 Field **mat_;
    \n+
    274 };
    \n+
    \n+
    275
    \n+
    276
    \n+
    277}
    \n+
    278#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_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+
    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:61
    \n+
    NedelecVecMatrix(std::size_t order)
    Definition nedelecsimplexprebasis.hh:66
    \n+
    MultiIndex< dim, Field > MI
    Definition nedelecsimplexprebasis.hh:64
    \n+
    unsigned int row_
    Definition nedelecsimplexprebasis.hh:272
    \n+
    unsigned int cols() const
    Definition nedelecsimplexprebasis.hh:255
    \n+
    ~NedelecVecMatrix()
    Definition nedelecsimplexprebasis.hh:247
    \n+
    MonomialBasis< geometryId, MI > MIBasis
    Definition nedelecsimplexprebasis.hh:65
    \n+
    unsigned int col_
    Definition nedelecsimplexprebasis.hh:272
    \n+
    static const unsigned int dim
    Definition nedelecsimplexprebasis.hh:63
    \n+
    void row(const unsigned int row, Vector &vec) const
    Definition nedelecsimplexprebasis.hh:264
    \n+
    static constexpr GeometryType geometry
    Definition nedelecsimplexprebasis.hh:62
    \n+
    unsigned int rows() const
    Definition nedelecsimplexprebasis.hh:259
    \n+
    Field ** mat_
    Definition nedelecsimplexprebasis.hh:273
    \n+
    Definition nedelecsimplexprebasis.hh:22
    \n+
    static void release(Object *object)
    Definition nedelecsimplexprebasis.hh:56
    \n+
    MBasisFactory::Object MBasis
    Definition nedelecsimplexprebasis.hh:24
    \n+
    static Object * create(Key order)
    Definition nedelecsimplexprebasis.hh:38
    \n+
    PolynomialBasisWithMatrix< EvalMBasis, SparseCoeffMatrix< Field, dim > > Basis
    Definition nedelecsimplexprebasis.hh:26
    \n+
    const Basis Object
    Definition nedelecsimplexprebasis.hh:28
    \n+
    StandardEvaluator< MBasis > EvalMBasis
    Definition nedelecsimplexprebasis.hh:25
    \n+
    MonomialBasisProvider< dim, Field > MBasisFactory
    Definition nedelecsimplexprebasis.hh:23
    \n+
    std::size_t Key
    Definition nedelecsimplexprebasis.hh:29
    \n+
    Definition nedelecsimplexprebasis.hh:33
    \n+
    MonomialBasisProvider< dd, FF > Type
    Definition nedelecsimplexprebasis.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:37
    \n+
    int z(int i) const
    Definition multiindex.hh:91
    \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,164 +1,406 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXPREBASIS_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/_\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\n-25\n-26namespace Impl {\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 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\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-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+_\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\n+37 template< GeometryType::Id geometryId >\n+_\b3_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( _\bK_\be_\by order )\n+39 {\n+40 /*\n+41 * The nedelec parameter begins at 1.\n+42 * This is the numbering used by J.C. Nedelec himself.\n+43 * See \"Mixed Finite Elements in \\R^3\" published in 1980.\n+44 *\n+45 * This construction is based on the construction of Raviart-Thomas elements.\n+46 * There the numbering starts at 0.\n+47 * Because of this we reduce the order internally by 1.\n+48 */\n+49 order--;\n+50 _\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+51 _\bM_\bB_\ba_\bs_\bi_\bs *mbasis = MBasisFactory::template create(order+1);\n+52 std::remove_const_t* tmBasis = new std::remove_const_t\n+(*mbasis);\n+53 tmBasis->fill(vecMatrix);\n+54 return tmBasis;\n+55 }\n+_\b5_\b6 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+57 };\n+58\n+59 template \n+_\b6_\b0 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx\n+61 {\n+_\b6_\b2 static constexpr GeometryType _\bg_\be_\bo_\bm_\be_\bt_\br_\by = geometryId;\n+_\b6_\b3 static const unsigned int _\bd_\bi_\bm = _\bg_\be_\bo_\bm_\be_\bt_\br_\by._\bd_\bi_\bm();\n+_\b6_\b4 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_\b5 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_\b6 _\bN_\be_\bd_\be_\bl_\be_\bc_\bV_\be_\bc_\bM_\ba_\bt_\br_\bi_\bx(std::size_t order)\n+67 {\n+68 /*\n+69 * Construction of Nedelec elements see \"Mixed Finite Elements in \\R^3\" by\n+Nedelec, 1980.\n+70 *\n+71 * Let $\\P_{n,k}$ be the space of polynomials in $n$ variables with degree\n+$\\leq k$.\n+72 * The space of Nedelec functions in $n$ dimensions with index $k$ is defined\n+as\n+73 *\n+74 * \\begin{equation*}\n+75 * Ned_k := (\\P_{n,k-1})^n \\oplus \\{p \\in (\\P_{n,k})^n: =0 \\}\n+76 * \\end{equation*}\n+77 * with $x=(x,y)$ in two dimensions and $x=(x,y,z)$ in three dimensions.\n+78 *\n+79 * For $Ned_k$ holds\n+80 * \\begin{equation*}\n+81 * (\\P_{n,k-1})^n \\subset Ned_k \\subset (\\P_{n,k})^n.\n+82 * \\end{equation*}\n+83 *\n+84 * We construct $(\\P_{n,k})^n$ and and only use the monomials contained in\n+$Ned$.\n+85 *\n+86 */\n+87 if( (_\bd_\bi_\bm!=2 && _\bd_\bi_\bm!=3) || !_\bg_\be_\bo_\bm_\be_\bt_\br_\by.isSimplex())\n+88 DUNE_THROW(Dune::NotImplemented,\"High order nedelec elements are only\n+supported by simplices in 2d and 3d\");\n+89\n+90 _\bM_\bI_\bB_\ba_\bs_\bi_\bs basis(order+1);\n+91 FieldVector< MI, dim > x;\n+92 /*\n+93 * Init MultiIndices\n+94 * x[0]=(1,0,0) x\n+95 * x[1]=(0,1,0) y\n+96 * x[2]=(0,0,1) z\n+97 */\n+98 for( unsigned int i = 0; i < _\bd_\bi_\bm; ++i )\n+99 x[i].set(i,1);\n+100 std::vector< MI > val( basis._\bs_\bi_\bz_\be() );\n 101\n-102} // namespace Impl\n-103\n+102 // val now contains all monomials in $n$ dimensions with degree $\\leq\n+order+1$\n+103 basis._\be_\bv_\ba_\bl_\bu_\ba_\bt_\be( x, val );\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_\bp_\br_\bi_\bs_\bm_\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_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\b._\bh_\bh\n+105 _\bc_\bo_\bl_\b_ = basis._\bs_\bi_\bz_\be();\n+106\n+107 // get $\\dim (\\P_{n,order-1})$\n+108 unsigned int notHomogen = 0;\n+109 if (order>0)\n+110 notHomogen = basis._\bs_\bi_\bz_\be_\bs()[order-1];\n+111\n+112 // the number of basis functions for the set of homogeneous polynomials\n+with degree $order$\n+113 unsigned int homogen = basis._\bs_\bi_\bz_\be_\bs()[order]-notHomogen;\n+114\n+115 /*\n+116 * 2D:\n+117 * \\begin{equation*}\n+118 * Ned_{order} = (\\P_{order-1})^2 \\oplus (-y,x)^T \\widetilde \\P_{order-1}\n+119 * \\end{equation*}\n+120 *\n+121 * It gets more complicated in higher dimensions.\n+122 *\n+123 * 3D:\n+124 * \\begin{equation*}\n+125 * 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+126 * \\end{equation*}\n+127 *\n+128 * Note the last term. The index $n-1$ is on purpose.\n+129 * Else i.e. k=2\n+130 *\n+131 * (0,z,-y)^T x = (z,0,-x)^T y - (y,-x,0)^T z.\n+132 *\n+133 */\n+134\n+135 /*\n+136 * compute the number of rows for the coefficient matrix\n+137 *\n+138 * row_ = dim* \\dim Ned_{order}\n+139 */\n+140 if (_\bd_\bi_\bm == 2)\n+141 _\br_\bo_\bw_\b_ = (notHomogen*_\bd_\bi_\bm+homogen*(_\bd_\bi_\bm+1))*_\bd_\bi_\bm;\n+142 else if (_\bd_\bi_\bm==3)\n+143 {\n+144 // get dim \\P_{n-1,order-1}\n+145 int homogenTwoVariables = 0;\n+146 for( int w = notHomogen; w0;\n+209 /*\n+210 * Init 9 rows to zero.\n+211 * If the homogeneous monomial has a positive x-exponent (0,-z,y) gets\n+skipped ( see example for the Nedelec space in 3D )\n+212 * In this case only 6 rows get initialised.\n+213 */\n+214 for (unsigned int r=0; r<_\bd_\bi_\bm*(_\bd_\bi_\bm-skipLastDim); ++r)\n+215 {\n+216 // init rows to zero\n+217 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r] = new Field[_\bc_\bo_\bl_\b_];\n+218 for (unsigned int j=0; j<_\bc_\bo_\bl_\b_; ++j)\n+219 _\bm_\ba_\bt_\b_[_\br_\bo_\bw+r][j] = 0.;\n+220 }\n+221\n+222 /*\n+223 * first $dim$ rows are for (z,0,-x)\n+224 *\n+225 * second $dim$ rows are for (-y,x,0)\n+226 *\n+227 * third $dim$ rows are for (0,-z,y)\n+228 *\n+229 */\n+230 for (unsigned int r=0; r<_\bd_\bi_\bm - skipLastDim; ++r)\n+231 {\n+232 int index = (r+_\bd_\bi_\bm-1)%_\bd_\bi_\bm;\n+233 for (int w=homogen+notHomogen; w\n+_\b2_\b6_\b4 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n+265 {\n+266 const unsigned int N = _\bc_\bo_\bl_\bs();\n+267 assert( vec.size() == N );\n+268 for (unsigned int i=0; i MI\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:_\br_\bo_\bw_\b_\n+unsigned int row_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:272\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:255\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:247\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: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:_\bc_\bo_\bl_\b_\n+unsigned int col_\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexprebasis.hh:272\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:63\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:264\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:62\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:259\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:273\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:22\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:56\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:24\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:38\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: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:_\bO_\bb_\bj_\be_\bc_\bt\n+const Basis Object\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:_\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: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:_\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:23\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: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:_\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:33\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: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:37\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:91\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/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: lagrangeprism.hh File Reference\n+dune-localfunctions: nedelecsimplexinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,50 @@\n \n \n \n \n \n \n \n
    \n \n-
    lagrangeprism.hh File Reference
    \n+
    nedelecsimplexinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n+
    #include <fstream>
    \n+#include <utility>
    \n #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/common/fvector.hh>
    \n-#include <dune/common/math.hh>
    \n+#include <dune/common/exceptions.hh>
    \n+#include <dune/geometry/quadraturerules.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/localinterpolation.hh>
    \n-#include <dune/localfunctions/common/localkey.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 Classes

    class  Dune::LagrangePrismLocalFiniteElement< D, R, k >
     Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order. More...
    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 >
     
    \n \n \n \n

    \n Namespaces

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

    struct  Dune::NedelecBasisFactory< dim, SF, CF >
     
    \n \n \n \n-

    \n Namespaces

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

    \n-Typedefs

    template<class D , class R >
    using Dune::PrismP2LocalFiniteElement = LagrangePrismLocalFiniteElement< D, R, 2 >
     Second-order Lagrange finite element on a three-dimensional prism.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-prismp2.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/_\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+ * _\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+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+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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\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 = _\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< D, R,\n- 2 >\n-\u00a0 Second-order Lagrange finite element on a three-dimensional prism.\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/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: prismp2.hh Source File\n+dune-localfunctions: nedelecsimplexbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,73 @@\n
    \n \n \n \n \n \n \n
    \n-
    prismp2.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 (C) 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_PRISM2_3DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_PRISM2_3DLOCALFINITEELEMENT_HH
    \n-
    7
    \n-\n-
    9
    \n-
    10#warning This header is deprecated
    \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-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    19 template<class D, class R>
    \n-\n-
    21 [[deprecated("use LagrangePrismLocalFiniteElement instead")]]
    \n-\n-
    23
    \n-
    24}
    \n-
    25
    \n-
    26#endif
    \n-\n+\n+\n+\n+
    15
    \n+
    16namespace Dune
    \n+
    17{
    \n+
    18 /*
    \n+
    19 * `NedelecPreBasisFactory` provides a basis for the Nedelec function space.
    \n+
    20 * `NedelecL2InterpolationFactory` provides the linear functionals.
    \n+
    21 *
    \n+
    22 * `Defaultbasisfactory::create` first builds the function space and the linear functionals.
    \n+
    23 * Then the constructor of `BasisMatrix` gets called. There the matrix
    \n+
    24 *
    \n+
    25 * \\begin{equation}
    \n+
    26 * A_{i,j} := N_j(\\phi_i)
    \n+
    27 * \\end{equation}
    \n+
    28 *
    \n+
    29 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.
    \n+
    30 * Then the matrix gets inverted and is then used as a coefficent matrix for the standard monomial basis.
    \n+
    31 *
    \n+
    32 * For more details on the theory see the first chapter "Construction of Local Finite Element Spaces Using the Generic Reference Elements"
    \n+
    33 * of the book "Advances in Dune" by Dedner, Flemisch and Kl\u00f6fkorn published in 2012.
    \n+
    34 */
    \n+
    35
    \n+
    36 template< unsigned int dim, class SF, class CF >
    \n+
    \n+\n+
    38 : public DefaultBasisFactory< NedelecPreBasisFactory<dim,CF>,
    \n+
    39 NedelecL2InterpolationFactory<dim,CF>,
    \n+
    40 dim,dim,SF,CF >
    \n+
    41 {};
    \n+
    \n+
    42}
    \n+
    43
    \n+
    44#endif // #ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELECSIMPLEX_NEDELECSIMPLEXBASIS_HH
    \n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:652
    \n+
    Definition nedelecsimplexbasis.hh:41
    \n+
    Definition defaultbasisfactory.hh:38
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \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,41 +1,71 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-prismp2.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 (C) 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_PRISM2_3DLOCALFINITEELEMENT_HH\n-6#define DUNE_PRISM2_3DLOCALFINITEELEMENT_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/_\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-9\n-10#warning This header is deprecated\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-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-19 template\n-_\b2_\b0 using _\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-21 [[deprecated(\"use LagrangePrismLocalFiniteElement instead\")]]\n-22 = _\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-23\n-24}\n-25\n-26#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\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/_\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+19 * `NedelecPreBasisFactory` provides a basis for the Nedelec function space.\n+20 * `NedelecL2InterpolationFactory` provides the linear functionals.\n+21 *\n+22 * `Defaultbasisfactory::create` first builds the function space and the\n+linear functionals.\n+23 * Then the constructor of `BasisMatrix` gets called. There the matrix\n+24 *\n+25 * \\begin{equation}\n+26 * A_{i,j} := N_j(\\phi_i)\n+27 * \\end{equation}\n+28 *\n+29 * with linear functionals $N_j$ and basisfunctions $\\phi_i$ gets assembled.\n+30 * Then the matrix gets inverted and is then used as a coefficent matrix for\n+the standard monomial basis.\n+31 *\n+32 * For more details on the theory see the first chapter \"Construction of\n+Local Finite Element Spaces Using the Generic Reference Elements\"\n+33 * of the book \"Advances in Dune\" by Dedner, Flemisch and Kl\u00c3\u00b6fkorn published\n+in 2012.\n+34 */\n+35\n+36 template< unsigned int dim, class SF, class CF >\n+_\b3_\b7 struct _\bN_\be_\bd_\be_\bl_\be_\bc_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by\n+38 : public _\bD_\be_\bf_\ba_\bu_\bl_\bt_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\bt_\bo_\br_\by< NedelecPreBasisFactory,\n+39 NedelecL2InterpolationFactory,\n+40 dim,dim,SF,CF >\n+41 {};\n+42}\n+43\n+44#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_\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_\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_\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:652\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: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\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/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: p2.hh File Reference\n+dune-localfunctions: nedelec1stkindsimplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,46 @@\n \n \n \n \n \n \n \n
    \n \n-
    p2.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    nedelec1stkindsimplex.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangesimplex.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/localinterpolation.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 d>
    using Dune::P2LocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, d, 2 >
     Second-order Lagrange finite element on the reference simplex with compile-time dimension.
     
    \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,23 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-p2.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/_\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+ * _\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_\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:_\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:_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R, d,\n- 2 >\n-\u00a0 Second-order Lagrange finite element on the reference simplex with\n- compile-time dimension.\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: p2.hh Source File\n+dune-localfunctions: nedelec1stkindsimplex.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,426 @@\n
    \n \n \n \n \n \n \n
    \n-
    p2.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 (C) 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_P2_LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_P2_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-
    10#warning This header is deprecated
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    19 template<class D, class R, int d>
    \n-\n-
    21 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n-\n-
    23
    \n-
    24}
    \n-
    25
    \n-
    26#endif
    \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+
    18#include <dune/localfunctions/common/localinterpolation.hh> // For deprecated makeFunctionWithCallOperator
    \n+\n+
    20
    \n+
    21namespace Dune
    \n+
    22{
    \n+
    23namespace Impl
    \n+
    24{
    \n+
    35 template<class D, class R, int dim, int k>
    \n+
    36 class Nedelec1stKindSimplexLocalBasis
    \n+
    37 {
    \n+
    38 // Number of edges of the reference simplex
    \n+
    39 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n+
    40
    \n+
    41 public:
    \n+
    42 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,
    \n+
    43 R,dim,FieldVector<R,dim>,
    \n+
    44 FieldMatrix<R,dim,dim> >;
    \n+
    45
    \n+
    52 Nedelec1stKindSimplexLocalBasis()
    \n+
    53 {
    \n+
    54 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n+
    55 }
    \n+
    56
    \n+
    59 Nedelec1stKindSimplexLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n+
    60 : Nedelec1stKindSimplexLocalBasis()
    \n+
    61 {
    \n+
    62 for (std::size_t i=0; i<edgeOrientation_.size(); i++)
    \n+
    63 edgeOrientation_[i] *= edgeOrientation[i] ? -1.0 : 1.0;
    \n+
    64 }
    \n+
    65
    \n+
    67 static constexpr unsigned int size()
    \n+
    68 {
    \n+
    69 static_assert(dim==2 || dim==3, "Nedelec shape functions are implemented only for 2d and 3d simplices.");
    \n+
    70 if (dim==2)
    \n+
    71 return k * (k+2);
    \n+
    72 if (dim==3)
    \n+
    73 return k * (k+2) * (k+3) / 2;
    \n+
    74 }
    \n+
    75
    \n+
    81 void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    82 std::vector<typename Traits::RangeType>& out) const
    \n+
    83 {
    \n+
    84 static_assert(k==1, "Evaluating N\u00e9d\u00e9lec shape functions is implemented only for first order.");
    \n+
    85 out.resize(size());
    \n+
    86
    \n+
    87 if (dim==2)
    \n+
    88 {
    \n+
    89 // First-order N\u00e9d\u00e9lec shape functions on a triangle are of the form
    \n+
    90 //
    \n+
    91 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R
    \n+
    92 out[0] = {D(1) - in[1], in[0]};
    \n+
    93 out[1] = {in[1], -in[0]+D(1)};
    \n+
    94 out[2] = {-in[1], in[0]};
    \n+
    95 }
    \n+
    96
    \n+
    97 if constexpr (dim==3)
    \n+
    98 {
    \n+
    99 // First-order N\u00e9d\u00e9lec shape functions on a tetrahedron are of the form
    \n+
    100 //
    \n+
    101 // a + b \\times x, a, b \\in R^3
    \n+
    102 //
    \n+
    103 // The following coefficients create the six basis vectors
    \n+
    104 // that are dual to the edge degrees of freedom:
    \n+
    105 //
    \n+
    106 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}
    \n+
    107 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}
    \n+
    108 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}
    \n+
    109 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}
    \n+
    110 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}
    \n+
    111 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}
    \n+
    112 //
    \n+
    113 // The following implementation uses these values, and simply
    \n+
    114 // skips all the zeros.
    \n+
    115
    \n+
    116 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };
    \n+
    117 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};
    \n+
    118 out[2] = { - in[1] , in[0] , 0 };
    \n+
    119 out[3] = { in[2], in[2], 1 - in[0] - in[1]};
    \n+
    120 out[4] = { -in[2], 0 , in[0] };
    \n+
    121 out[5] = { 0 , -in[2], in[1]};
    \n+
    122 }
    \n+
    123
    \n+
    124 for (std::size_t i=0; i<out.size(); i++)
    \n+
    125 out[i] *= edgeOrientation_[i];
    \n+
    126 }
    \n+
    127
    \n+
    133 void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    134 std::vector<typename Traits::JacobianType>& out) const
    \n+
    135 {
    \n+
    136 out.resize(size());
    \n+
    137 if (dim==2)
    \n+
    138 {
    \n+
    139 out[0][0] = { 0, -1};
    \n+
    140 out[0][1] = { 1, 0};
    \n+
    141
    \n+
    142 out[1][0] = { 0, 1};
    \n+
    143 out[1][1] = {-1, 0};
    \n+
    144
    \n+
    145 out[2][0] = { 0, -1};
    \n+
    146 out[2][1] = { 1, 0};
    \n+
    147 }
    \n+
    148 if (dim==3)
    \n+
    149 {
    \n+
    150 out[0][0] = { 0,-1,-1};
    \n+
    151 out[0][1] = { 1, 0, 0};
    \n+
    152 out[0][2] = { 1, 0, 0};
    \n+
    153
    \n+
    154 out[1][0] = { 0, 1, 0};
    \n+
    155 out[1][1] = {-1, 0, -1};
    \n+
    156 out[1][2] = { 0, 1, 0};
    \n+
    157
    \n+
    158 out[2][0] = { 0, -1, 0};
    \n+
    159 out[2][1] = { 1, 0, 0};
    \n+
    160 out[2][2] = { 0, 0, 0};
    \n+
    161
    \n+
    162 out[3][0] = { 0, 0, 1};
    \n+
    163 out[3][1] = { 0, 0, 1};
    \n+
    164 out[3][2] = {-1, -1, 0};
    \n+
    165
    \n+
    166 out[4][0] = { 0, 0, -1};
    \n+
    167 out[4][1] = { 0, 0, 0};
    \n+
    168 out[4][2] = { 1, 0, 0};
    \n+
    169
    \n+
    170 out[5][0] = { 0, 0, 0};
    \n+
    171 out[5][1] = { 0, 0, -1};
    \n+
    172 out[5][2] = { 0, 1, 0};
    \n+
    173 }
    \n+
    174
    \n+
    175 for (std::size_t i=0; i<out.size(); i++)
    \n+
    176 out[i] *= edgeOrientation_[i];
    \n+
    177
    \n+
    178 }
    \n+
    179
    \n+
    186 void partial(const std::array<unsigned int, dim>& order,
    \n+
    187 const typename Traits::DomainType& in,
    \n+
    188 std::vector<typename Traits::RangeType>& out) const
    \n+
    189 {
    \n+
    190 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    191 if (totalOrder == 0) {
    \n+
    192 evaluateFunction(in, out);
    \n+
    193 } else if (totalOrder == 1) {
    \n+
    194 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    195 out.resize(size());
    \n+
    196
    \n+
    197 if (dim==2)
    \n+
    198 {
    \n+
    199 if (direction==0)
    \n+
    200 {
    \n+
    201 out[0] = {0, 1};
    \n+
    202 out[1] = {0, -1};
    \n+
    203 out[2] = {0, 1};
    \n+
    204 }
    \n+
    205 else
    \n+
    206 {
    \n+
    207 out[0] = {-1, 0};
    \n+
    208 out[1] = { 1, 0};
    \n+
    209 out[2] = {-1, 0};
    \n+
    210 }
    \n+
    211 }
    \n+
    212
    \n+
    213 if (dim==3)
    \n+
    214 {
    \n+
    215 switch (direction)
    \n+
    216 {
    \n+
    217 case 0:
    \n+
    218 out[0] = { 0, 1, 1};
    \n+
    219 out[1] = { 0,-1, 0};
    \n+
    220 out[2] = { 0, 1, 0};
    \n+
    221 out[3] = { 0, 0,-1};
    \n+
    222 out[4] = { 0, 0, 1};
    \n+
    223 out[5] = { 0, 0, 0};
    \n+
    224 break;
    \n+
    225
    \n+
    226 case 1:
    \n+
    227 out[0] = {-1, 0, 0};
    \n+
    228 out[1] = { 1, 0, 1};
    \n+
    229 out[2] = {-1, 0, 0};
    \n+
    230 out[3] = { 0, 0,-1};
    \n+
    231 out[4] = { 0, 0, 0};
    \n+
    232 out[5] = { 0, 0, 1};
    \n+
    233 break;
    \n+
    234
    \n+
    235 case 2:
    \n+
    236 out[0] = {-1, 0, 0};
    \n+
    237 out[1] = { 0,-1, 0};
    \n+
    238 out[2] = { 0, 0, 0};
    \n+
    239 out[3] = { 1, 1, 0};
    \n+
    240 out[4] = {-1, 0, 0};
    \n+
    241 out[5] = { 0,-1, 0};
    \n+
    242 break;
    \n+
    243 }
    \n+
    244 }
    \n+
    245
    \n+
    246 for (std::size_t i=0; i<out.size(); i++)
    \n+
    247 out[i] *= edgeOrientation_[i];
    \n+
    248
    \n+
    249 } else {
    \n+
    250 out.resize(size());
    \n+
    251 for (std::size_t i = 0; i < size(); ++i)
    \n+
    252 for (std::size_t j = 0; j < dim; ++j)
    \n+
    253 out[i][j] = 0;
    \n+
    254 }
    \n+
    255
    \n+
    256 }
    \n+
    257
    \n+
    259 unsigned int order() const
    \n+
    260 {
    \n+
    261 return k;
    \n+
    262 }
    \n+
    263
    \n+
    264 private:
    \n+
    265
    \n+
    266 // Orientations of the simplex edges
    \n+
    267 std::array<R,numberOfEdges> edgeOrientation_;
    \n+
    268 };
    \n+
    269
    \n+
    270
    \n+
    275 template <int dim, int k>
    \n+
    276 class Nedelec1stKindSimplexLocalCoefficients
    \n+
    277 {
    \n+
    278 public:
    \n+
    280 Nedelec1stKindSimplexLocalCoefficients ()
    \n+
    281 : localKey_(size())
    \n+
    282 {
    \n+
    283 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n+
    284 // Assign all degrees of freedom to edges
    \n+
    285 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n+
    286 for (std::size_t i=0; i<size(); i++)
    \n+
    287 localKey_[i] = LocalKey(i,dim-1,0);
    \n+
    288 }
    \n+
    289
    \n+
    291 std::size_t size() const
    \n+
    292 {
    \n+
    293 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d simplices.");
    \n+
    294 return (dim==2) ? k * (k+2)
    \n+
    295 : k * (k+2) * (k+3) / 2;
    \n+
    296 }
    \n+
    297
    \n+
    300 const LocalKey& localKey (std::size_t i) const
    \n+
    301 {
    \n+
    302 return localKey_[i];
    \n+
    303 }
    \n+
    304
    \n+
    305 private:
    \n+
    306 std::vector<LocalKey> localKey_;
    \n+
    307 };
    \n+
    308
    \n+
    313 template<class LB>
    \n+
    314 class Nedelec1stKindSimplexLocalInterpolation
    \n+
    315 {
    \n+
    316 static constexpr auto dim = LB::Traits::dimDomain;
    \n+
    317 static constexpr auto size = LB::size();
    \n+
    318
    \n+
    319 // Number of edges of the reference simplex
    \n+
    320 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;
    \n+
    321
    \n+
    322 public:
    \n+
    323
    \n+
    325 Nedelec1stKindSimplexLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n+
    326 {
    \n+
    327 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::simplex(dim));
    \n+
    328
    \n+
    329 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    330 m_[i] = refElement.position(i,dim-1);
    \n+
    331
    \n+
    332 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    333 {
    \n+
    334 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n+
    335 auto v0 = *vertexIterator;
    \n+
    336 auto v1 = *(++vertexIterator);
    \n+
    337 // By default, edges point from the vertex with the smaller index
    \n+
    338 // to the vertex with the larger index.
    \n+
    339 if (v0>v1)
    \n+
    340 std::swap(v0,v1);
    \n+
    341 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n+
    342 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n+
    343 }
    \n+
    344 }
    \n+
    345
    \n+
    351 template<typename F, typename C>
    \n+
    352 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    353 {
    \n+
    354 out.resize(size);
    \n+
    355 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n+
    D DomainType
    domain type
    Definition common/localbasis.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+
    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
    \n Generated by \"doxygen\"/ 1.9.8\n
    \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,41 +1,446 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-p2.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 (C) 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_P2_LOCALFINITEELEMENT_HH\n-6#define DUNE_P2_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/_\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+8#include \n 9\n-10#warning This header is deprecated\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-19 template\n-_\b2_\b0 using _\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-21 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n-22 = _\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_\b,_\b2_\b>;\n-23\n-24}\n-25\n-26#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh> // For deprecated\n+makeFunctionWithCallOperator\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+35 template\n+36 class Nedelec1stKindSimplexLocalBasis\n+37 {\n+38 // Number of edges of the reference simplex\n+39 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n+40\n+41 public:\n+42 using Traits = LocalBasisTraits,\n+43 R,dim,FieldVector,\n+44 FieldMatrix >;\n+45\n+52 Nedelec1stKindSimplexLocalBasis()\n+53 {\n+54 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\n+55 }\n+56\n+59 Nedelec1stKindSimplexLocalBasis(std::bitset edgeOrientation)\n+60 : Nedelec1stKindSimplexLocalBasis()\n+61 {\n+62 for (std::size_t i=0; i& out) const\n+83 {\n+84 static_assert(k==1, \"Evaluating N\u00c3\u00a9d\u00c3\u00a9lec shape functions is implemented\n+only for first order.\");\n+85 out.resize(size());\n+86\n+87 if (dim==2)\n+88 {\n+89 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a triangle are of the form\n+90 //\n+91 // (a1, a2) + b(-x2, x1)^T, a_1, a_2, b \\in R\n+92 out[0] = {D(1) - in[1], in[0]};\n+93 out[1] = {in[1], -in[0]+D(1)};\n+94 out[2] = {-in[1], in[0]};\n+95 }\n+96\n+97 if constexpr (dim==3)\n+98 {\n+99 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a tetrahedron are of the form\n+100 //\n+101 // a + b \\times x, a, b \\in R^3\n+102 //\n+103 // The following coefficients create the six basis vectors\n+104 // that are dual to the edge degrees of freedom:\n+105 //\n+106 // a[0] = { 1, 0, 0} b[0] = { 0, -1, 1}\n+107 // a[1] = { 0, 1, 0} b[1] = { 1, 0, -1}\n+108 // a[2] = { 0, 0, 0} b[2] = { 0, 0, 1}\n+109 // a[3] = { 0, 0, 1} b[3] = {-1, 1, 0}\n+110 // a[4] = { 0, 0, 0} b[4] = { 0, -1, 0}\n+111 // a[5] = { 0, 0, 0} b[5] = { 1, 0, 0}\n+112 //\n+113 // The following implementation uses these values, and simply\n+114 // skips all the zeros.\n+115\n+116 out[0] = { 1 - in[1] - in[2], in[0] , in[0] };\n+117 out[1] = { in[1] , 1 - in[0] - in[2], in[1]};\n+118 out[2] = { - in[1] , in[0] , 0 };\n+119 out[3] = { in[2], in[2], 1 - in[0] - in[1]};\n+120 out[4] = { -in[2], 0 , in[0] };\n+121 out[5] = { 0 , -in[2], in[1]};\n+122 }\n+123\n+124 for (std::size_t i=0; i& out) const\n+135 {\n+136 out.resize(size());\n+137 if (dim==2)\n+138 {\n+139 out[0][0] = { 0, -1};\n+140 out[0][1] = { 1, 0};\n+141\n+142 out[1][0] = { 0, 1};\n+143 out[1][1] = {-1, 0};\n+144\n+145 out[2][0] = { 0, -1};\n+146 out[2][1] = { 1, 0};\n+147 }\n+148 if (dim==3)\n+149 {\n+150 out[0][0] = { 0,-1,-1};\n+151 out[0][1] = { 1, 0, 0};\n+152 out[0][2] = { 1, 0, 0};\n+153\n+154 out[1][0] = { 0, 1, 0};\n+155 out[1][1] = {-1, 0, -1};\n+156 out[1][2] = { 0, 1, 0};\n+157\n+158 out[2][0] = { 0, -1, 0};\n+159 out[2][1] = { 1, 0, 0};\n+160 out[2][2] = { 0, 0, 0};\n+161\n+162 out[3][0] = { 0, 0, 1};\n+163 out[3][1] = { 0, 0, 1};\n+164 out[3][2] = {-1, -1, 0};\n+165\n+166 out[4][0] = { 0, 0, -1};\n+167 out[4][1] = { 0, 0, 0};\n+168 out[4][2] = { 1, 0, 0};\n+169\n+170 out[5][0] = { 0, 0, 0};\n+171 out[5][1] = { 0, 0, -1};\n+172 out[5][2] = { 0, 1, 0};\n+173 }\n+174\n+175 for (std::size_t i=0; i& order,\n+187 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+188 std::vector& out) const\n+189 {\n+190 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+191 if (totalOrder == 0) {\n+192 evaluateFunction(in, out);\n+193 } else if (totalOrder == 1) {\n+194 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+195 out.resize(size());\n+196\n+197 if (dim==2)\n+198 {\n+199 if (direction==0)\n+200 {\n+201 out[0] = {0, 1};\n+202 out[1] = {0, -1};\n+203 out[2] = {0, 1};\n+204 }\n+205 else\n+206 {\n+207 out[0] = {-1, 0};\n+208 out[1] = { 1, 0};\n+209 out[2] = {-1, 0};\n+210 }\n+211 }\n+212\n+213 if (dim==3)\n+214 {\n+215 switch (direction)\n+216 {\n+217 case 0:\n+218 out[0] = { 0, 1, 1};\n+219 out[1] = { 0,-1, 0};\n+220 out[2] = { 0, 1, 0};\n+221 out[3] = { 0, 0,-1};\n+222 out[4] = { 0, 0, 1};\n+223 out[5] = { 0, 0, 0};\n+224 break;\n+225\n+226 case 1:\n+227 out[0] = {-1, 0, 0};\n+228 out[1] = { 1, 0, 1};\n+229 out[2] = {-1, 0, 0};\n+230 out[3] = { 0, 0,-1};\n+231 out[4] = { 0, 0, 0};\n+232 out[5] = { 0, 0, 1};\n+233 break;\n+234\n+235 case 2:\n+236 out[0] = {-1, 0, 0};\n+237 out[1] = { 0,-1, 0};\n+238 out[2] = { 0, 0, 0};\n+239 out[3] = { 1, 1, 0};\n+240 out[4] = {-1, 0, 0};\n+241 out[5] = { 0,-1, 0};\n+242 break;\n+243 }\n+244 }\n+245\n+246 for (std::size_t i=0; i edgeOrientation_;\n+268 };\n+269\n+270\n+275 template \n+276 class Nedelec1stKindSimplexLocalCoefficients\n+277 {\n+278 public:\n+280 Nedelec1stKindSimplexLocalCoefficients ()\n+281 : localKey_(size())\n+282 {\n+283 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n+implemented.\");\n+284 // Assign all degrees of freedom to edges\n+285 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n+286 for (std::size_t i=0; i localKey_;\n+307 };\n+308\n+313 template\n+314 class Nedelec1stKindSimplexLocalInterpolation\n+315 {\n+316 static constexpr auto dim = LB::Traits::dimDomain;\n+317 static constexpr auto size = LB::size();\n+318\n+319 // Number of edges of the reference simplex\n+320 constexpr static std::size_t numberOfEdges = dim*(dim+1)/2;\n+321\n+322 public:\n+323\n+325 Nedelec1stKindSimplexLocalInterpolation (std::bitset s = 0)\n+326 {\n+327 auto refElement = Dune::referenceElement(GeometryTypes::simplex\n+(dim));\n+328\n+329 for (std::size_t i=0; iv1)\n+340 std::swap(v0,v1);\n+341 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n+342 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n+343 }\n+344 }\n+345\n+351 template\n+352 void interpolate (const F& ff, std::vector& out) const\n+353 {\n+354 out.resize(size);\n+355 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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:_\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:838\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: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:_\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+_\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/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: p1.hh File Reference\n+dune-localfunctions: nedelec1stkindcube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,47 @@\n \n \n \n \n \n \n \n
    \n \n-
    p1.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    nedelec1stkindcube.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangesimplex.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/localinterpolation.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::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-\n-\n-\n-\n-\n

    \n-Typedefs

    template<class D , class R , int dim>
    using Dune::P1LocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, dim, 1 >
     The local p1 finite element on simplices.
     
    \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,29 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-p1.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/_\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+ * _\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+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/_\bc_\bo_\bm_\bm_\bo_\bn_\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_\bn_\be_\b/_\bl_\bo_\bc_\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_\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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n- dim, 1 >\n-\u00a0 The local p1 finite element on simplices.\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: p1.hh Source File\n+dune-localfunctions: nedelec1stkindcube.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,521 @@\n
    \n \n \n \n \n \n \n
    \n-
    p1.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 (C) 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_P1LOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_P1LOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH
    \n
    7
    \n-\n+
    8#include <numeric>
    \n
    9
    \n-
    10#warning This header is deprecated
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    22 template<class D, class R, int dim>
    \n-\n-
    24 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n-\n-
    26
    \n-
    27}
    \n-
    28
    \n-
    29#endif
    \n-\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+
    19#include <dune/localfunctions/common/localinterpolation.hh> // For deprecated makeFunctionWithCallOperator
    \n+\n+
    21
    \n+
    22namespace Dune
    \n+
    23{
    \n+
    24namespace Impl
    \n+
    25{
    \n+
    36 template<class D, class R, int dim, int k>
    \n+
    37 class Nedelec1stKindCubeLocalBasis
    \n+
    38 {
    \n+
    39 // Number of edges of the reference cube
    \n+
    40 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \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 Nedelec1stKindCubeLocalBasis()
    \n+
    54 {
    \n+
    55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);
    \n+
    56 }
    \n+
    57
    \n+
    60 Nedelec1stKindCubeLocalBasis(std::bitset<numberOfEdges> edgeOrientation)
    \n+
    61 : Nedelec1stKindCubeLocalBasis()
    \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 cubes.");
    \n+
    71 if (dim==2)
    \n+
    72 return 2*k * (k+1);
    \n+
    73 if (dim==3)
    \n+
    74 return 3*k * (k+1) * (k+1);
    \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 square are of the form
    \n+
    91 //
    \n+
    92 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R
    \n+
    93 //
    \n+
    94 // The following coefficients create the four basis vectors
    \n+
    95 // that are dual to the edge degrees of freedom:
    \n+
    96 //
    \n+
    97 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1
    \n+
    98 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1
    \n+
    99 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1
    \n+
    100 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1
    \n+
    101
    \n+
    102 out[0] = { 0, D(1) - in[0]};
    \n+
    103 out[1] = { 0, in[0]};
    \n+
    104 out[2] = { D(1) - in[1], 0};
    \n+
    105 out[3] = { in[1], 0};
    \n+
    106 }
    \n+
    107
    \n+
    108 if constexpr (dim==3)
    \n+
    109 {
    \n+
    110 // First-order N\u00e9d\u00e9lec shape functions on a cube are of the form
    \n+
    111 //
    \n+
    112 // (e1 yz)
    \n+
    113 // 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+
    114 // (e3 xy)
    \n+
    115 //
    \n+
    116 // The following coefficients create the twelve basis vectors
    \n+
    117 // that are dual to the edge degrees of freedom:
    \n+
    118 //
    \n+
    119 // 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+
    120 // 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+
    121 // 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+
    122 // 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+
    123 //
    \n+
    124 // The following implementation uses these values, and simply
    \n+
    125 // skips all the zeros.
    \n+
    126
    \n+
    127 for (std::size_t i=0; i<out.size(); i++)
    \n+
    128 out[i] = {0,0,0};
    \n+
    129
    \n+
    130 out[0][2] = { 1 - in[0] - in[1] + in[0]*in[1]};
    \n+
    131 out[1][2] = { in[0] - in[0]*in[1]};
    \n+
    132 out[2][2] = { in[1] - in[0]*in[1]};
    \n+
    133 out[3][2] = { in[0]*in[1]};
    \n+
    134
    \n+
    135 out[4][1] = { 1 - in[0] - in[2] + in[0]*in[2]};
    \n+
    136 out[5][1] = { in[0] - in[0]*in[2]};
    \n+
    137 out[8][1] = { in[2] - in[0]*in[2]};
    \n+
    138 out[9][1] = { in[0]*in[2]};
    \n+
    139
    \n+
    140 out[6][0] = { 1 - in[1] - in[2] + in[1]*in[2]};
    \n+
    141 out[7][0] = { in[1] - in[1]*in[2]};
    \n+
    142 out[10][0] = { in[2] - in[1]*in[2]};
    \n+
    143 out[11][0] = { in[1]*in[2]};
    \n+
    144 }
    \n+
    145
    \n+
    146 for (std::size_t i=0; i<out.size(); i++)
    \n+
    147 out[i] *= edgeOrientation_[i];
    \n+
    148 }
    \n+
    149
    \n+
    155 void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    156 std::vector<typename Traits::JacobianType>& out) const
    \n+
    157 {
    \n+
    158 out.resize(size());
    \n+
    159 if (dim==2)
    \n+
    160 {
    \n+
    161 for (std::size_t i=0; i<out.size(); i++)
    \n+
    162 for (std::size_t j=0; j<dim; j++)
    \n+
    163 out[i][j] = { 0, 0};
    \n+
    164
    \n+
    165 out[0][1] = { -1, 0};
    \n+
    166 out[1][1] = { 1, 0};
    \n+
    167
    \n+
    168 out[2][0] = { 0, -1};
    \n+
    169 out[3][0] = { 0, 1};
    \n+
    170 }
    \n+
    171 if (dim==3)
    \n+
    172 {
    \n+
    173 for (std::size_t i=0; i<out.size(); i++)
    \n+
    174 for(std::size_t j=0;j<dim; j++)
    \n+
    175 out[i][j] = {0,0,0};
    \n+
    176
    \n+
    177
    \n+
    178 out[0][2] = {-1 +in[1], -1 + in[0], 0};
    \n+
    179 out[1][2] = { 1 -in[1], - in[0], 0};
    \n+
    180 out[2][2] = { -in[1], 1 - in[0], 0};
    \n+
    181 out[3][2] = { in[1], in[0], 0};
    \n+
    182
    \n+
    183 out[4][1] = {-1 +in[2], 0, -1 + in[0]};
    \n+
    184 out[5][1] = { 1 -in[2], 0, - in[0]};
    \n+
    185 out[8][1] = { -in[2], 0, 1 - in[0]};
    \n+
    186 out[9][1] = { in[2], 0, in[0]};
    \n+
    187
    \n+
    188 out[6][0] = { 0, -1 + in[2], -1 + in[1]};
    \n+
    189 out[7][0] = { 0, 1 - in[2], - in[1]};
    \n+
    190 out[10][0] = { 0, - in[2], 1 - in[1]};
    \n+
    191 out[11][0] = { 0, in[2], in[1]};
    \n+
    192
    \n+
    193 }
    \n+
    194
    \n+
    195 for (std::size_t i=0; i<out.size(); i++)
    \n+
    196 out[i] *= edgeOrientation_[i];
    \n+
    197
    \n+
    198 }
    \n+
    199
    \n+
    206 void partial(const std::array<unsigned int, dim>& order,
    \n+
    207 const typename Traits::DomainType& in,
    \n+
    208 std::vector<typename Traits::RangeType>& out) const
    \n+
    209 {
    \n+
    210 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    211 if (totalOrder == 0) {
    \n+
    212 evaluateFunction(in, out);
    \n+
    213 } else if (totalOrder == 1) {
    \n+
    214 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    215 out.resize(size());
    \n+
    216
    \n+
    217 if (dim==2)
    \n+
    218 {
    \n+
    219 if (direction==0)
    \n+
    220 {
    \n+
    221 out[0] = { 0, -1};
    \n+
    222 out[1] = { 0, 1};
    \n+
    223 out[2] = { 0, 0};
    \n+
    224 out[3] = { 0, 0};
    \n+
    225 }
    \n+
    226 else
    \n+
    227 {
    \n+
    228 out[0] = { 0, 0};
    \n+
    229 out[1] = { 0, 0};
    \n+
    230 out[2] = { -1, 0};
    \n+
    231 out[3] = { 1, 0};
    \n+
    232 }
    \n+
    233 }
    \n+
    234
    \n+
    235 if (dim==3)
    \n+
    236 {
    \n+
    237 switch (direction)
    \n+
    238 {
    \n+
    239 case 0:
    \n+
    240 out[0] = { 0, 0, -1 +in[1]};
    \n+
    241 out[1] = { 0, 0, 1 -in[1]};
    \n+
    242 out[2] = { 0, 0, -in[1]};
    \n+
    243 out[3] = { 0, 0, in[1]};
    \n+
    244
    \n+
    245 out[4] = { 0, -1 +in[2], 0};
    \n+
    246 out[5] = { 0, 1 -in[2], 0};
    \n+
    247 out[8] = { 0, -in[2], 0};
    \n+
    248 out[9] = { 0, in[2], 0};
    \n+
    249
    \n+
    250 out[6] = {0,0,0};
    \n+
    251 out[7] = {0,0,0};
    \n+
    252 out[10] = {0,0,0};
    \n+
    253 out[11] = {0,0,0};
    \n+
    254 break;
    \n+
    255
    \n+
    256 case 1:
    \n+
    257 out[0] = { 0, 0, -1 + in[0]};
    \n+
    258 out[1] = { 0, 0, - in[0]};
    \n+
    259 out[2] = { 0, 0, 1 - in[0]};
    \n+
    260 out[3] = { 0, 0, in[0]};
    \n+
    261
    \n+
    262 out[4] = {0,0,0};
    \n+
    263 out[5] = {0,0,0};
    \n+
    264 out[8] = {0,0,0};
    \n+
    265 out[9] = {0,0,0};
    \n+
    266
    \n+
    267 out[6] = { -1 + in[2], 0, 0};
    \n+
    268 out[7] = { 1 - in[2], 0, 0};
    \n+
    269 out[10] = { - in[2], 0, 0};
    \n+
    270 out[11] = { in[2], 0, 0};
    \n+
    271 break;
    \n+
    272
    \n+
    273 case 2:
    \n+
    274 out[0] = {0,0,0};
    \n+
    275 out[1] = {0,0,0};
    \n+
    276 out[2] = {0,0,0};
    \n+
    277 out[3] = {0,0,0};
    \n+
    278
    \n+
    279 out[4] = { 0, -1 + in[0], 0};
    \n+
    280 out[5] = { 0, - in[0], 0};
    \n+
    281 out[8] = { 0, 1 - in[0], 0};
    \n+
    282 out[9] = { 0, in[0], 0};
    \n+
    283
    \n+
    284 out[6] = { -1 + in[1], 0, 0};
    \n+
    285 out[7] = { - in[1], 0, 0};
    \n+
    286 out[10] = { 1 - in[1], 0, 0};
    \n+
    287 out[11] = { in[1], 0, 0};
    \n+
    288 break;
    \n+
    289 }
    \n+
    290 }
    \n+
    291
    \n+
    292 for (std::size_t i=0; i<out.size(); i++)
    \n+
    293 out[i] *= edgeOrientation_[i];
    \n+
    294
    \n+
    295 } else if (totalOrder == 2) {
    \n+
    296 out.resize(size());
    \n+
    297
    \n+
    298 if (dim==2)
    \n+
    299 for (std::size_t i = 0; i < size(); ++i)
    \n+
    300 for (std::size_t j = 0; j < dim; ++j)
    \n+
    301 out[i][j] = 0;
    \n+
    302
    \n+
    303 if (dim==3)
    \n+
    304 {
    \n+
    305 for(size_t i=0; i<out.size(); i++)
    \n+
    306 out[i] = { 0, 0, 0};
    \n+
    307
    \n+
    308 //case (1,1,0):
    \n+
    309 if( order[0] == 1 and order[1]==1)
    \n+
    310 {
    \n+
    311 out[0] = { 0, 0, 1};
    \n+
    312 out[1] = { 0, 0, -1};
    \n+
    313 out[2] = { 0, 0, -1};
    \n+
    314 out[3] = { 0, 0, 1};
    \n+
    315 }
    \n+
    316
    \n+
    317 //case (1,0,1):
    \n+
    318 if( order[0] == 1 and order[2]==1)
    \n+
    319 {
    \n+
    320 out[4] = { 0, 1, 0};
    \n+
    321 out[5] = { 0, -1, 0};
    \n+
    322 out[8] = { 0, -1, 0};
    \n+
    323 out[9] = { 0, 1, 0};
    \n+
    324 }
    \n+
    325
    \n+
    326 //case (0,1,1):
    \n+
    327 if( order[1] == 1 and order[2]==1)
    \n+
    328 {
    \n+
    329 out[6] = { 1, 0, 0};
    \n+
    330 out[7] = { -1, 0, 0};
    \n+
    331 out[10] = { -1, 0, 0};
    \n+
    332 out[11] = { 1, 0, 0};
    \n+
    333 }
    \n+
    334
    \n+
    335 for (std::size_t i=0; i<out.size(); i++)
    \n+
    336 out[i] *= edgeOrientation_[i];
    \n+
    337 }
    \n+
    338
    \n+
    339
    \n+
    340 }else {
    \n+
    341 out.resize(size());
    \n+
    342 for (std::size_t i = 0; i < size(); ++i)
    \n+
    343 for (std::size_t j = 0; j < dim; ++j)
    \n+
    344 out[i][j] = 0;
    \n+
    345 }
    \n+
    346
    \n+
    347 }
    \n+
    348
    \n+
    350 unsigned int order() const
    \n+
    351 {
    \n+
    352 if (dim==2)
    \n+
    353 return 2*k-1;
    \n+
    354 if (dim==3)
    \n+
    355 return 3*k-1;
    \n+
    356 }
    \n+
    357
    \n+
    358 private:
    \n+
    359
    \n+
    360 // Orientations of the cube edges
    \n+
    361 std::array<R,numberOfEdges> edgeOrientation_;
    \n+
    362 };
    \n+
    363
    \n+
    364
    \n+
    369 template <int dim, int k>
    \n+
    370 class Nedelec1stKindCubeLocalCoefficients
    \n+
    371 {
    \n+
    372 public:
    \n+
    374 Nedelec1stKindCubeLocalCoefficients ()
    \n+
    375 : localKey_(size())
    \n+
    376 {
    \n+
    377 static_assert(k==1, "Only first-order N\u00e9d\u00e9lec local coefficients are implemented.");
    \n+
    378 // Assign all degrees of freedom to edges
    \n+
    379 // TODO: This is correct only for first-order N\u00e9d\u00e9lec elements
    \n+
    380 for (std::size_t i=0; i<size(); i++)
    \n+
    381 localKey_[i] = LocalKey(i,dim-1,0);
    \n+
    382 }
    \n+
    383
    \n+
    385 std::size_t size() const
    \n+
    386 {
    \n+
    387 static_assert(dim==2 || dim==3, "N\u00e9d\u00e9lec shape functions are implemented only for 2d and 3d cubes.");
    \n+
    388 return (dim==2) ? 2*k * (k+1)
    \n+
    389 : 3*k * (k+1) * (k+1);
    \n+
    390 }
    \n+
    391
    \n+
    394 const LocalKey& localKey (std::size_t i) const
    \n+
    395 {
    \n+
    396 return localKey_[i];
    \n+
    397 }
    \n+
    398
    \n+
    399 private:
    \n+
    400 std::vector<LocalKey> localKey_;
    \n+
    401 };
    \n+
    402
    \n+
    407 template<class LB>
    \n+
    408 class Nedelec1stKindCubeLocalInterpolation
    \n+
    409 {
    \n+
    410 static constexpr auto dim = LB::Traits::dimDomain;
    \n+
    411 static constexpr auto size = LB::size();
    \n+
    412
    \n+
    413 // Number of edges of the reference cube
    \n+
    414 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;
    \n+
    415
    \n+
    416 public:
    \n+
    417
    \n+
    419 Nedelec1stKindCubeLocalInterpolation (std::bitset<numberOfEdges> s = 0)
    \n+
    420 {
    \n+
    421 auto refElement = Dune::referenceElement<double,dim>(GeometryTypes::cube(dim));
    \n+
    422
    \n+
    423 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    424 m_[i] = refElement.position(i,dim-1);
    \n+
    425
    \n+
    426 for (std::size_t i=0; i<numberOfEdges; i++)
    \n+
    427 {
    \n+
    428 auto vertexIterator = refElement.subEntities(i,dim-1,dim).begin();
    \n+
    429 auto v0 = *vertexIterator;
    \n+
    430 auto v1 = *(++vertexIterator);
    \n+
    431
    \n+
    432 // By default, edges point from the vertex with the smaller index
    \n+
    433 // to the vertex with the larger index.
    \n+
    434 if (v0>v1)
    \n+
    435 std::swap(v0,v1);
    \n+
    436 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);
    \n+
    437 edge_[i] *= (s[i]) ? -1.0 : 1.0;
    \n+
    438 }
    \n+
    439 }
    \n+
    440
    \n+
    446 template<typename F, typename C>
    \n+
    447 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    448 {
    \n+
    449 out.resize(size);
    \n+
    450 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n+
    D DomainType
    domain type
    Definition common/localbasis.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+
    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
    \n Generated by \"doxygen\"/ 1.9.8\n
    \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,41 +1,545 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-p1.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 (C) 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_P1LOCALFINITEELEMENT_HH\n-6#define DUNE_P1LOCALFINITEELEMENT_HH\n+5#ifndef DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_NEDELEC_NEDELEC1STKINDCUBE_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/_\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+8#include \n 9\n-10#warning This header is deprecated\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-22 template\n-_\b2_\b3 using _\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-24 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n-25 = _\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,_\b1_\b>;\n-26\n-27}\n-28\n-29#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh> // For deprecated\n+makeFunctionWithCallOperator\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+24namespace Impl\n+25{\n+36 template\n+37 class Nedelec1stKindCubeLocalBasis\n+38 {\n+39 // Number of edges of the reference cube\n+40 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n+41\n+42 public:\n+43 using Traits = LocalBasisTraits,\n+44 R,dim,FieldVector,\n+45 FieldMatrix >;\n+46\n+53 Nedelec1stKindCubeLocalBasis()\n+54 {\n+55 std::fill(edgeOrientation_.begin(), edgeOrientation_.end(), 1.0);\n+56 }\n+57\n+60 Nedelec1stKindCubeLocalBasis(std::bitset edgeOrientation)\n+61 : Nedelec1stKindCubeLocalBasis()\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 square are of the form\n+91 //\n+92 // (a, b)^T + (c y, d x)^T, a, b, c, d \\in R\n+93 //\n+94 // The following coefficients create the four basis vectors\n+95 // that are dual to the edge degrees of freedom:\n+96 //\n+97 // a[0] = 0 b[0] = 1 c[0] = 0 d[0] = -1\n+98 // a[1] = 0 b[1] = 0 c[1] = 0 d[1] = 1\n+99 // a[2] = 1 b[2] = 0 c[2] = 0 d[2] = -1\n+100 // a[3] = 0 b[3] = 0 c[3] = 0 d[3] = 1\n+101\n+102 out[0] = { 0, D(1) - in[0]};\n+103 out[1] = { 0, in[0]};\n+104 out[2] = { D(1) - in[1], 0};\n+105 out[3] = { in[1], 0};\n+106 }\n+107\n+108 if constexpr (dim==3)\n+109 {\n+110 // First-order N\u00c3\u00a9d\u00c3\u00a9lec shape functions on a cube are of the form\n+111 //\n+112 // (e1 yz)\n+113 // 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+114 // (e3 xy)\n+115 //\n+116 // The following coefficients create the twelve basis vectors\n+117 // that are dual to the edge degrees of freedom:\n+118 //\n+119 // 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+120 // 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+121 // 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+122 // 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+123 //\n+124 // The following implementation uses these values, and simply\n+125 // skips all the zeros.\n+126\n+127 for (std::size_t i=0; i& out) const\n+157 {\n+158 out.resize(size());\n+159 if (dim==2)\n+160 {\n+161 for (std::size_t i=0; i& order,\n+207 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+208 std::vector& out) const\n+209 {\n+210 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+211 if (totalOrder == 0) {\n+212 evaluateFunction(in, out);\n+213 } else if (totalOrder == 1) {\n+214 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+215 out.resize(size());\n+216\n+217 if (dim==2)\n+218 {\n+219 if (direction==0)\n+220 {\n+221 out[0] = { 0, -1};\n+222 out[1] = { 0, 1};\n+223 out[2] = { 0, 0};\n+224 out[3] = { 0, 0};\n+225 }\n+226 else\n+227 {\n+228 out[0] = { 0, 0};\n+229 out[1] = { 0, 0};\n+230 out[2] = { -1, 0};\n+231 out[3] = { 1, 0};\n+232 }\n+233 }\n+234\n+235 if (dim==3)\n+236 {\n+237 switch (direction)\n+238 {\n+239 case 0:\n+240 out[0] = { 0, 0, -1 +in[1]};\n+241 out[1] = { 0, 0, 1 -in[1]};\n+242 out[2] = { 0, 0, -in[1]};\n+243 out[3] = { 0, 0, in[1]};\n+244\n+245 out[4] = { 0, -1 +in[2], 0};\n+246 out[5] = { 0, 1 -in[2], 0};\n+247 out[8] = { 0, -in[2], 0};\n+248 out[9] = { 0, in[2], 0};\n+249\n+250 out[6] = {0,0,0};\n+251 out[7] = {0,0,0};\n+252 out[10] = {0,0,0};\n+253 out[11] = {0,0,0};\n+254 break;\n+255\n+256 case 1:\n+257 out[0] = { 0, 0, -1 + in[0]};\n+258 out[1] = { 0, 0, - in[0]};\n+259 out[2] = { 0, 0, 1 - in[0]};\n+260 out[3] = { 0, 0, in[0]};\n+261\n+262 out[4] = {0,0,0};\n+263 out[5] = {0,0,0};\n+264 out[8] = {0,0,0};\n+265 out[9] = {0,0,0};\n+266\n+267 out[6] = { -1 + in[2], 0, 0};\n+268 out[7] = { 1 - in[2], 0, 0};\n+269 out[10] = { - in[2], 0, 0};\n+270 out[11] = { in[2], 0, 0};\n+271 break;\n+272\n+273 case 2:\n+274 out[0] = {0,0,0};\n+275 out[1] = {0,0,0};\n+276 out[2] = {0,0,0};\n+277 out[3] = {0,0,0};\n+278\n+279 out[4] = { 0, -1 + in[0], 0};\n+280 out[5] = { 0, - in[0], 0};\n+281 out[8] = { 0, 1 - in[0], 0};\n+282 out[9] = { 0, in[0], 0};\n+283\n+284 out[6] = { -1 + in[1], 0, 0};\n+285 out[7] = { - in[1], 0, 0};\n+286 out[10] = { 1 - in[1], 0, 0};\n+287 out[11] = { in[1], 0, 0};\n+288 break;\n+289 }\n+290 }\n+291\n+292 for (std::size_t i=0; i edgeOrientation_;\n+362 };\n+363\n+364\n+369 template \n+370 class Nedelec1stKindCubeLocalCoefficients\n+371 {\n+372 public:\n+374 Nedelec1stKindCubeLocalCoefficients ()\n+375 : localKey_(size())\n+376 {\n+377 static_assert(k==1, \"Only first-order N\u00c3\u00a9d\u00c3\u00a9lec local coefficients are\n+implemented.\");\n+378 // Assign all degrees of freedom to edges\n+379 // TODO: This is correct only for first-order N\u00c3\u00a9d\u00c3\u00a9lec elements\n+380 for (std::size_t i=0; i localKey_;\n+401 };\n+402\n+407 template\n+408 class Nedelec1stKindCubeLocalInterpolation\n+409 {\n+410 static constexpr auto dim = LB::Traits::dimDomain;\n+411 static constexpr auto size = LB::size();\n+412\n+413 // Number of edges of the reference cube\n+414 constexpr static std::size_t numberOfEdges = power(2,dim-1)*dim;\n+415\n+416 public:\n+417\n+419 Nedelec1stKindCubeLocalInterpolation (std::bitset s = 0)\n+420 {\n+421 auto refElement = Dune::referenceElement(GeometryTypes::cube\n+(dim));\n+422\n+423 for (std::size_t i=0; iv1)\n+435 std::swap(v0,v1);\n+436 edge_[i] = refElement.position(v1,dim) - refElement.position(v0,dim);\n+437 edge_[i] *= (s[i]) ? -1.0 : 1.0;\n+438 }\n+439 }\n+440\n+446 template\n+447 void interpolate (const F& ff, std::vector& out) const\n+448 {\n+449 out.resize(size);\n+450 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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 _\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_\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:838\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: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:_\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+_\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/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: pyramidp2.hh File Reference\n+dune-localfunctions: orthonormalbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    pyramidp2.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    orthonormalbasis.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangepyramid.hh>
    \n+\n

    Go to the source code of this file.

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

    \n+Classes

    struct  Dune::OrthonormalBasisFactory< dim, SF, CF >
     
    struct  Dune::OrthonormalBasisFactory< dim, SF, CF >::EvaluationBasisFactory< dd, FF >
     
    \n \n \n \n-

    \n Namespaces

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

    \n-Typedefs

    template<class D , class R >
    using Dune::PyramidP2LocalFiniteElement = LagrangePyramidLocalFiniteElement< D, R, 2 >
     Second-order Lagrangian finite element on a three-dimensional pyramid.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-pyramidp2.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/_\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+ * _\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+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:_\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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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- D, R, 2 >\n-\u00a0 Second-order Lagrangian finite element on a three-dimensional pyramid.\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: pyramidp2.hh Source File\n+dune-localfunctions: orthonormalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,115 @@\n
    \n \n \n \n \n \n \n
    \n-
    pyramidp2.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 (C) 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_PYRAMIDP2_3DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_PYRAMIDP2_3DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_ORTHONORMALBASIS_HH
    \n+
    6#define DUNE_ORTHONORMALBASIS_HH
    \n
    7
    \n-\n+
    8#include <sstream>
    \n
    9
    \n-
    10#warning This header is deprecated
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    19 template<class D, class R>
    \n-\n-
    21 [[deprecated("use LagrangePyramidLocalFiniteElement instead")]]
    \n-\n-
    23
    \n-
    24}
    \n-
    25
    \n-
    26#endif
    \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-
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:812
    \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,40 +1,144 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-pyramidp2.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 (C) 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_PYRAMIDP2_3DLOCALFINITEELEMENT_HH\n-6#define DUNE_PYRAMIDP2_3DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_ORTHONORMALBASIS_HH\n+6#define DUNE_ORTHONORMALBASIS_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/_\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+8#include \n 9\n-10#warning This header is deprecated\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-19 template\n-_\b2_\b0 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-21 [[deprecated(\"use LagrangePyramidLocalFiniteElement instead\")]]\n-22 = _\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-23\n-24}\n-25\n-26#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\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+_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\ba_\bl_\bc_\bo_\bm_\bp_\bu_\bt_\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_\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:812\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+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/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: p23d.hh File Reference\n+dune-localfunctions: orthonormalcompute.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,57 @@\n \n \n \n \n \n \n \n
    \n \n-
    p23d.hh File Reference
    \n+Functions
    \n+
    orthonormalcompute.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangesimplex.hh>
    \n+
    #include <cassert>
    \n+#include <iostream>
    \n+#include <fstream>
    \n+#include <iomanip>
    \n+#include <utility>
    \n+#include <map>
    \n+#include <dune/common/fmatrix.hh>
    \n+#include <dune/geometry/type.hh>
    \n+#include <dune/localfunctions/utility/field.hh>
    \n+#include <dune/localfunctions/utility/lfematrix.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+Classes

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

    \n-Typedefs

    template<class D , class R >
    using Dune::P23DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 3, 2 >
     Second-order Lagrange local finite element on the reference tetrahedron.
     

    \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,22 +1,36 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-p23d.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/_\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+ * _\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 <_\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/_\bl_\bf_\be_\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 _\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+\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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b2_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n- 3, 2 >\n-\u00a0 Second-order Lagrange local finite element on the reference tetrahedron.\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/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: p23d.hh Source File\n+dune-localfunctions: orthonormalcompute.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,270 @@\n
    \n \n \n \n \n \n \n
    \n-
    p23d.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 (C) 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_P2_3DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_P2_3DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_ORTHONORMALCOMPUTE_HH
    \n+
    6#define DUNE_ORTHONORMALCOMPUTE_HH
    \n
    7
    \n-\n-
    9
    \n-
    10#warning This header is deprecated
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \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-
    22 template<class D, class R>
    \n-\n-
    24 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n-\n+
    15#include <dune/common/fmatrix.hh>
    \n+
    16
    \n+
    17#include <dune/geometry/type.hh>
    \n+
    18
    \n+\n+\n+\n+\n+
    23
    \n+
    \n+
    24namespace ONBCompute
    \n+
    25{
    \n
    26
    \n-
    27}
    \n-
    28
    \n-
    29#endif
    \n-\n-
    Definition bdfmcube.hh:18
    \n-
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \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 };
    \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::LFEMatrix< scalar_t >
    \n+
    95 {
    \n+\n+\n+
    98
    \n+
    99 public:
    \n+
    100 typedef std::vector< scalar_t > vec_t;
    \n+\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+
    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( Base::operator()( 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 for( int l = 0; l <=col2; ++l )
    \n+
    154 ret += Base::operator()( l, col2 ) * S( l, k ) * Base::operator()( 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 Base::operator()( 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 Base::operator()( i, coldest ) -= s * Base::operator()( 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 Base::operator()( 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+\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+
    void row(unsigned int row, Vector &vec) const
    Definition orthonormalcompute.hh:139
    \n+
    Dune::LFEMatrix< scalar_t > mat_t
    Definition orthonormalcompute.hh:101
    \n+
    Definition lfematrix.hh:18
    \n+
    unsigned int cols() const
    Definition lfematrix.hh:63
    \n+
    void resize(const unsigned int rows, const unsigned int cols)
    Definition lfematrix.hh:80
    \n+
    const Field & operator()(const unsigned int row, const unsigned int col) const
    Definition lfematrix.hh:44
    \n+
    unsigned int rows() const
    Definition lfematrix.hh:58
    \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:37
    \n+
    int z(int i) const
    Definition multiindex.hh:91
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,41 +1,293 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-p23d.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 (C) 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_P2_3DLOCALFINITEELEMENT_HH\n-6#define DUNE_P2_3DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_ORTHONORMALCOMPUTE_HH\n+6#define DUNE_ORTHONORMALCOMPUTE_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/_\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-9\n-10#warning This header is deprecated\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n+8#include \n+9#include \n+10#include \n+11#include \n+12#include \n+13#include \n 14\n-22 template\n-_\b2_\b3 using _\bP_\b2_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-24 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n-25 = _\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,_\b3_\b,_\b2_\b>;\n+15#include \n+16\n+17#include \n+18\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/_\bf_\bi_\be_\bl_\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/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\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}\n-28\n-29#endif\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_\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:838\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 };\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 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx< 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 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> _\bB_\ba_\bs_\be;\n+98\n+99 public:\n+_\b1_\b0_\b0 typedef std::vector< scalar_t > _\bv_\be_\bc_\b__\bt;\n+_\b1_\b0_\b1 typedef _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b> _\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 _\bB_\ba_\bs_\be_\b:_\b:_\br_\be_\bs_\bi_\bz_\be( size, size );\n+119 S._\br_\be_\bs_\bi_\bz_\be( size, size );\n+120 d.resize( size );\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 < _\bB_\ba_\bs_\be_\b:_\b:_\bc_\bo_\bl_\bs() );\n+143 for( std::size_t i = 0; i < _\bB_\ba_\bs_\be_\b:_\b:_\br_\bo_\bw_\bs(); ++i )\n+144 _\bD_\bu_\bn_\be_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( Base::operator()( 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 for( int l = 0; l <=col2; ++l )\n+154 ret += Base::operator()( l, col2 ) * S( l, k ) * _\bB_\ba_\bs_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)( k, col1\n+);\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 Base::operator()( 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 Base::operator()( i, coldest ) -= s * Base::operator()( 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 = _\bB_\ba_\bs_\be_\b:_\b:_\br_\bo_\bw_\bs();\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 Base::operator()( 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_\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+_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh\n+_\bm_\bu_\bl_\bt_\bi_\bi_\bn_\bd_\be_\bx_\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:_\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+_\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::LFEMatrix< scalar_t > mat_t\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn orthonormalcompute.hh:101\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 _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\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 lfematrix.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>_\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:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\b _\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n+const Field & operator()(const unsigned int row, const unsigned int col) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:44\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bs_\bc_\ba_\bl_\ba_\br_\b__\bt_\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 lfematrix.hh:58\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:37\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:91\n ===============================================================================\n 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: lagrangecube.hh File Reference\n+dune-localfunctions: raviartthomas.hh File Reference\n \n \n \n \n \n \n \n@@ -65,48 +65,36 @@\n \n \n \n \n \n \n \n
    \n- \n-
    lagrangecube.hh File Reference
    \n+
    raviartthomas.hh File Reference
    \n
    \n
    \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/localinterpolation.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::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 Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-lagrangecube.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_\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+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 _\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-\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/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: lagrangecube.hh Source File\n+dune-localfunctions: raviartthomas.hh Source File\n \n \n \n \n \n \n \n@@ -70,747 +70,59 @@\n
    \n \n \n \n \n \n \n
    \n-
    lagrangecube.hh
    \n+
    raviartthomas.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 (C) 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_RAVIARTTHOMASFINITEELEMENT_HH
    \n+
    6#define DUNE_RAVIARTTHOMASFINITEELEMENT_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-\n-
    21
    \n-
    22namespace Dune { namespace Impl
    \n-
    23{
    \n-
    24 // Forward declaration
    \n-
    25 template<class LocalBasis>
    \n-
    26 class LagrangeCubeLocalInterpolation;
    \n-
    27
    \n-
    38 template<class D, class R, unsigned int dim, unsigned int k>
    \n-
    39 class LagrangeCubeLocalBasis
    \n-
    40 {
    \n-
    41 friend class LagrangeCubeLocalInterpolation<LagrangeCubeLocalBasis<D,R,dim,k> >;
    \n-
    42
    \n-
    43 // i-th Lagrange polynomial of degree k in one dimension
    \n-
    44 static R p(unsigned int i, D x)
    \n-
    45 {
    \n-
    46 R result(1.0);
    \n-
    47 for (unsigned int j=0; j<=k; j++)
    \n-
    48 if (j!=i) result *= (k*x-j)/((int)i-(int)j);
    \n-
    49 return result;
    \n-
    50 }
    \n-
    51
    \n-
    52 // derivative of ith Lagrange polynomial of degree k in one dimension
    \n-
    53 static R dp(unsigned int i, D x)
    \n-
    54 {
    \n-
    55 R result(0.0);
    \n-
    56
    \n-
    57 for (unsigned int j=0; j<=k; j++)
    \n-
    58 {
    \n-
    59 if (j!=i)
    \n-
    60 {
    \n-
    61 R prod( (k*1.0)/((int)i-(int)j) );
    \n-
    62 for (unsigned int l=0; l<=k; l++)
    \n-
    63 if (l!=i && l!=j)
    \n-
    64 prod *= (k*x-l)/((int)i-(int)l);
    \n-
    65 result += prod;
    \n-
    66 }
    \n-
    67 }
    \n-
    68 return result;
    \n-
    69 }
    \n-
    70
    \n-
    71 // Second derivative of j-th Lagrange polynomial of degree k in one dimension
    \n-
    72 // Formula and notation taken from https://en.wikipedia.org/wiki/Lagrange_polynomial#Derivatives
    \n-
    73 static R ddp(unsigned int j, D x)
    \n-
    74 {
    \n-
    75 R result(0.0);
    \n-
    76
    \n-
    77 for (unsigned int i=0; i<=k; i++)
    \n-
    78 {
    \n-
    79 if (i==j)
    \n-
    80 continue;
    \n-
    81
    \n-
    82 R sum(0);
    \n-
    83
    \n-
    84 for (unsigned int m=0; m<=k; m++)
    \n-
    85 {
    \n-
    86 if (m==i || m==j)
    \n-
    87 continue;
    \n-
    88
    \n-
    89 R prod( (k*1.0)/((int)j-(int)m) );
    \n-
    90 for (unsigned int l=0; l<=k; l++)
    \n-
    91 if (l!=i && l!=j && l!=m)
    \n-
    92 prod *= (k*x-l)/((int)j-(int)l);
    \n-
    93 sum += prod;
    \n-
    94 }
    \n-
    95
    \n-
    96 result += sum * ( (k*1.0)/((int)j-(int)i) );
    \n-
    97 }
    \n-
    98
    \n-
    99 return result;
    \n-
    100 }
    \n-
    101
    \n-
    102 // Return i as a d-digit number in the (k+1)-nary system
    \n-
    103 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n-
    104 {
    \n-
    105 std::array<unsigned int,dim> alpha;
    \n-
    106 for (unsigned int j=0; j<dim; j++)
    \n-
    107 {
    \n-
    108 alpha[j] = i % (k+1);
    \n-
    109 i = i/(k+1);
    \n-
    110 }
    \n-
    111 return alpha;
    \n-
    112 }
    \n-
    113
    \n-
    114 public:
    \n-
    115 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n-
    116
    \n-
    119 static constexpr unsigned int size ()
    \n-
    120 {
    \n-
    121 return power(k+1, dim);
    \n-
    122 }
    \n-
    123
    \n-
    125 void evaluateFunction(const typename Traits::DomainType& x,
    \n-
    126 std::vector<typename Traits::RangeType>& out) const
    \n-
    127 {
    \n-
    128 out.resize(size());
    \n-
    129
    \n-
    130 // Specialization for zero-order case
    \n-
    131 if (k==0)
    \n-
    132 {
    \n-
    133 out[0] = 1;
    \n-
    134 return;
    \n-
    135 }
    \n-
    136
    \n-
    137 if (k==1)
    \n-
    138 {
    \n-
    139 for (size_t i=0; i<size(); i++)
    \n-
    140 {
    \n-
    141 out[i] = 1;
    \n-
    142
    \n-
    143 for (unsigned int j=0; j<dim; j++)
    \n-
    144 // if j-th bit of i is set multiply with x[j], else with 1-x[j]
    \n-
    145 out[i] *= (i & (1<<j)) ? x[j] : 1-x[j];
    \n-
    146 }
    \n-
    147 return;
    \n-
    148 }
    \n-
    149
    \n-
    150 // General case
    \n-
    151 for (size_t i=0; i<size(); i++)
    \n-
    152 {
    \n-
    153 // convert index i to multiindex
    \n-
    154 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    155
    \n-
    156 // initialize product
    \n-
    157 out[i] = 1.0;
    \n-
    158
    \n-
    159 // dimension by dimension
    \n-
    160 for (unsigned int j=0; j<dim; j++)
    \n-
    161 out[i] *= p(alpha[j],x[j]);
    \n-
    162 }
    \n-
    163 }
    \n-
    164
    \n-
    170 void evaluateJacobian(const typename Traits::DomainType& x,
    \n-
    171 std::vector<typename Traits::JacobianType>& out) const
    \n-
    172 {
    \n-
    173 out.resize(size());
    \n-
    174
    \n-
    175 // Specialization for k==0
    \n-
    176 if (k==0)
    \n-
    177 {
    \n-
    178 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n-
    179 return;
    \n-
    180 }
    \n-
    181
    \n-
    182 // Specialization for k==1
    \n-
    183 if (k==1)
    \n-
    184 {
    \n-
    185 // Loop over all shape functions
    \n-
    186 for (size_t i=0; i<size(); i++)
    \n-
    187 {
    \n-
    188 // Loop over all coordinate directions
    \n-
    189 for (unsigned int j=0; j<dim; j++)
    \n-
    190 {
    \n-
    191 // Initialize: the overall expression is a product
    \n-
    192 // if j-th bit of i is set to 1, else -11
    \n-
    193 out[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n-
    194
    \n-
    195 for (unsigned int l=0; l<dim; l++)
    \n-
    196 {
    \n-
    197 if (j!=l)
    \n-
    198 // if l-th bit of i is set multiply with x[l], else with 1-x[l]
    \n-
    199 out[i][0][j] *= (i & (1<<l)) ? x[l] : 1-x[l];
    \n-
    200 }
    \n-
    201 }
    \n-
    202 }
    \n-
    203 return;
    \n-
    204 }
    \n-
    205
    \n-
    206 // The general case
    \n-
    207
    \n-
    208 // Loop over all shape functions
    \n-
    209 for (size_t i=0; i<size(); i++)
    \n-
    210 {
    \n-
    211 // convert index i to multiindex
    \n-
    212 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    213
    \n-
    214 // Loop over all coordinate directions
    \n-
    215 for (unsigned int j=0; j<dim; j++)
    \n-
    216 {
    \n-
    217 // Initialize: the overall expression is a product
    \n-
    218 // if j-th bit of i is set to -1, else 1
    \n-
    219 out[i][0][j] = dp(alpha[j],x[j]);
    \n-
    220
    \n-
    221 // rest of the product
    \n-
    222 for (unsigned int l=0; l<dim; l++)
    \n-
    223 if (l!=j)
    \n-
    224 out[i][0][j] *= p(alpha[l],x[l]);
    \n-
    225 }
    \n-
    226 }
    \n-
    227 }
    \n-
    228
    \n-
    235 void partial(const std::array<unsigned int,dim>& order,
    \n-
    236 const typename Traits::DomainType& in,
    \n-
    237 std::vector<typename Traits::RangeType>& out) const
    \n-
    238 {
    \n-
    239 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    240
    \n-
    241 out.resize(size());
    \n-
    242
    \n-
    243 if (k==0)
    \n-
    244 {
    \n-
    245 out[0] = (totalOrder==0);
    \n-
    246 return;
    \n-
    247 }
    \n-
    248
    \n-
    249 if (k==1)
    \n-
    250 {
    \n-
    251 if (totalOrder == 0)
    \n-
    252 {
    \n-
    253 evaluateFunction(in, out);
    \n-
    254 }
    \n-
    255 else if (totalOrder == 1)
    \n-
    256 {
    \n-
    257 out.resize(size());
    \n-
    258
    \n-
    259 auto direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    260 if (direction >= dim)
    \n-
    261 DUNE_THROW(RangeError, "Direction of partial derivative not found!");
    \n-
    262
    \n-
    263 // Loop over all shape functions
    \n-
    264 for (std::size_t i = 0; i < size(); ++i)
    \n-
    265 {
    \n-
    266 // Initialize: the overall expression is a product
    \n-
    267 // if j-th bit of i is set to 1, otherwise to -1
    \n-
    268 out[i] = (i & (1<<direction)) ? 1 : -1;
    \n-
    269
    \n-
    270 for (unsigned int j = 0; j < dim; ++j)
    \n-
    271 {
    \n-
    272 if (direction != j)
    \n-
    273 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n-
    274 out[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n-
    275 }
    \n-
    276 }
    \n-
    277 }
    \n-
    278 else if (totalOrder == 2)
    \n-
    279 {
    \n-
    280
    \n-
    281 for (size_t i=0; i<size(); i++)
    \n-
    282 {
    \n-
    283 // convert index i to multiindex
    \n-
    284 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    285
    \n-
    286 // Initialize: the overall expression is a product
    \n-
    287 out[i][0] = 1.0;
    \n-
    288
    \n-
    289 // rest of the product
    \n-
    290 for (std::size_t l=0; l<dim; l++)
    \n-
    291 {
    \n-
    292 switch (order[l])
    \n-
    293 {
    \n-
    294 case 0:
    \n-
    295 out[i][0] *= p(alpha[l],in[l]);
    \n-
    296 break;
    \n-
    297 case 1:
    \n-
    298 //std::cout << "dp: " << dp(alpha[l],in[l]) << std::endl;
    \n-
    299 out[i][0] *= dp(alpha[l],in[l]);
    \n-
    300 break;
    \n-
    301 case 2:
    \n-
    302 out[i][0] *= 0;
    \n-
    303 break;
    \n-
    304 default:
    \n-
    305 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    306 }
    \n-
    307 }
    \n-
    308 }
    \n-
    309 }
    \n-
    310 else
    \n-
    311 DUNE_THROW(NotImplemented, "Partial derivative of order " << totalOrder << " is not implemented!");
    \n-
    312
    \n-
    313 return;
    \n-
    314 }
    \n-
    315
    \n-
    316 // The case k>1
    \n-
    317
    \n-
    318 // Loop over all shape functions
    \n-
    319 for (size_t i=0; i<size(); i++)
    \n-
    320 {
    \n-
    321 // convert index i to multiindex
    \n-
    322 std::array<unsigned int,dim> alpha(multiindex(i));
    \n-
    323
    \n-
    324 // Initialize: the overall expression is a product
    \n-
    325 out[i][0] = 1.0;
    \n-
    326
    \n-
    327 // rest of the product
    \n-
    328 for (std::size_t l=0; l<dim; l++)
    \n-
    329 {
    \n-
    330 switch (order[l])
    \n-
    331 {
    \n-
    332 case 0:
    \n-
    333 out[i][0] *= p(alpha[l],in[l]);
    \n-
    334 break;
    \n-
    335 case 1:
    \n-
    336 out[i][0] *= dp(alpha[l],in[l]);
    \n-
    337 break;
    \n-
    338 case 2:
    \n-
    339 out[i][0] *= ddp(alpha[l],in[l]);
    \n-
    340 break;
    \n-
    341 default:
    \n-
    342 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n-
    343 }
    \n-
    344 }
    \n-
    345 }
    \n-
    346 }
    \n-
    347
    \n-
    349 static constexpr unsigned int order ()
    \n-
    350 {
    \n-
    351 return k;
    \n-
    352 }
    \n-
    353 };
    \n-
    354
    \n-
    360 template<unsigned int dim, unsigned int k>
    \n-
    361 class LagrangeCubeLocalCoefficients
    \n-
    362 {
    \n-
    363 // Return i as a d-digit number in the (k+1)-nary system
    \n-
    364 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n-
    365 {
    \n-
    366 std::array<unsigned int,dim> alpha;
    \n-
    367 for (unsigned int j=0; j<dim; j++)
    \n-
    368 {
    \n-
    369 alpha[j] = i % (k+1);
    \n-
    370 i = i/(k+1);
    \n-
    371 }
    \n-
    372 return alpha;
    \n-
    373 }
    \n-
    374
    \n-
    376 void setup1d(std::vector<unsigned int>& subEntity)
    \n-
    377 {
    \n-
    378 assert(k>0);
    \n-
    379
    \n-
    380 unsigned lastIndex=0;
    \n-
    381
    \n-
    382 /* edge and vertex numbering
    \n-
    383 0----0----1
    \n-
    384 */
    \n-
    385
    \n-
    386 // edge (0)
    \n-
    387 subEntity[lastIndex++] = 0; // corner 0
    \n-
    388 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    389 subEntity[lastIndex++] = 0; // inner dofs of element (0)
    \n-
    390
    \n-
    391 subEntity[lastIndex++] = 1; // corner 1
    \n-
    392
    \n-
    393 assert(power(k+1,dim)==lastIndex);
    \n-
    394 }
    \n-
    395
    \n-
    396 void setup2d(std::vector<unsigned int>& subEntity)
    \n-
    397 {
    \n-
    398 assert(k>0);
    \n-
    399
    \n-
    400 unsigned lastIndex=0;
    \n-
    401
    \n-
    402 // LocalKey: entity number, entity codim, dof indices within each entity
    \n-
    403 /* edge and vertex numbering
    \n-
    404 2----3----3
    \n-
    405 | |
    \n-
    406 | |
    \n-
    407 0 1
    \n-
    408 | |
    \n-
    409 | |
    \n-
    410 0----2----1
    \n-
    411 */
    \n-
    412
    \n-
    413 // lower edge (2)
    \n-
    414 subEntity[lastIndex++] = 0; // corner 0
    \n-
    415 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    416 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)
    \n-
    417
    \n-
    418 subEntity[lastIndex++] = 1; // corner 1
    \n-
    419
    \n-
    420 // iterate from bottom to top over inner edge dofs
    \n-
    421 for (unsigned e = 0; e < k - 1; ++e) {
    \n-
    422 subEntity[lastIndex++] = 0; // left edge (0)
    \n-
    423 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    424 subEntity[lastIndex++] = 0; // face dofs
    \n-
    425 subEntity[lastIndex++] = 1; // right edge (1)
    \n-
    426 }
    \n-
    427
    \n-
    428 // upper edge (3)
    \n-
    429 subEntity[lastIndex++] = 2; // corner 2
    \n-
    430 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    431 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)
    \n-
    432
    \n-
    433 subEntity[lastIndex++] = 3; // corner 3
    \n-
    434
    \n-
    435 assert(power(k+1,dim)==lastIndex);
    \n-
    436 }
    \n-
    437
    \n-
    438 void setup3d(std::vector<unsigned int>& subEntity)
    \n-
    439 {
    \n-
    440 assert(k>0);
    \n-
    441
    \n-
    442 unsigned lastIndex=0;
    \n-
    443#ifndef NDEBUG
    \n-
    444 const unsigned numIndices = power(k+1,dim);
    \n-
    445 const unsigned numFaceIndices = power(k+1,dim-1);
    \n-
    446#endif
    \n-
    447 const unsigned numInnerEdgeDofs = k-1;
    \n-
    448
    \n-
    449 // LocalKey: entity number, entity codim, dof indices within each entity
    \n-
    450 /* edge and vertex numbering
    \n-
    451
    \n-
    452 6---(11)--7 6---------7
    \n-
    453 /| /| /| (5) /|
    \n-
    454 (8)| (9)| / | top / |
    \n-
    455 / (2) / (3) / |(3)bac/k |
    \n-
    456 4---(10)--5 | 4---------5 |
    \n-
    457 | | | | left|(0)| |(1)|right
    \n-
    458 | 2--(7)|---3 | 2-----|---3
    \n-
    459 (0) / (1) / |(2)front | /
    \n-
    460 |(4) |(5) | / (4) | /
    \n-
    461 |/ |/ |/ bottom |/
    \n-
    462 0---(6)---1 0---------1
    \n-
    463 */
    \n-
    464
    \n-
    465 // bottom face (4)
    \n-
    466 lastIndex=0;
    \n-
    467 // lower edge (6)
    \n-
    468 subEntity[lastIndex++] = 0; // corner 0
    \n-
    469 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    470 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)
    \n-
    471
    \n-
    472 subEntity[lastIndex++] = 1; // corner 1
    \n-
    473
    \n-
    474 // iterate from bottom to top over inner edge dofs
    \n-
    475 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n-
    476 subEntity[lastIndex++] = 4; // left edge (4)
    \n-
    477 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    478 subEntity[lastIndex++] = 4; // inner face dofs
    \n-
    479 subEntity[lastIndex++] = 5; // right edge (5)
    \n-
    480 }
    \n-
    481
    \n-
    482 // upper edge (7)
    \n-
    483 subEntity[lastIndex++] = 2; // corner 2
    \n-
    484 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    485 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)
    \n-
    486 subEntity[lastIndex++] = 3; // corner 3
    \n-
    487
    \n-
    488 assert(numFaceIndices==lastIndex); // added 1 face so far
    \n-
    490
    \n-
    492 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {
    \n-
    493
    \n-
    494 // lower edge (connecting edges 0 and 1)
    \n-
    495 subEntity[lastIndex++] = 0; // dof on edge 0
    \n-
    496 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    497 subEntity[lastIndex++] = 2; // dof in front face
    \n-
    498 subEntity[lastIndex++] = 1; // dof on edge 1
    \n-
    499
    \n-
    500 // iterate from bottom to top over inner edge dofs
    \n-
    501 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n-
    502 subEntity[lastIndex++] = 0; // on left face (0)
    \n-
    503 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    504 subEntity[lastIndex++] = 0; // volume dofs
    \n-
    505 subEntity[lastIndex++] = 1; // right face (1)
    \n-
    506 }
    \n-
    507
    \n-
    508 // upper edge (connecting edges 0 and 1)
    \n-
    509 subEntity[lastIndex++] = 2; // dof on edge 2
    \n-
    510 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n-
    511 subEntity[lastIndex++] = 3; // dof on rear face (3)
    \n-
    512 subEntity[lastIndex++] = 3; // dof on edge 3
    \n-
    513
    \n-
    514 assert(lastIndex==(f+1+1)*numFaceIndices);
    \n-
    515 }
    \n-
    516
    \n-
    518 // lower edge (10)
    \n-
    519 subEntity[lastIndex++] = 4; // corner 4
    \n-
    520 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    521 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)
    \n-
    522 subEntity[lastIndex++] = 5; // corner 5
    \n-
    523
    \n-
    524 // iterate from bottom to top over inner edge dofs
    \n-
    525 for (unsigned e = 0; e < k - 1; ++e) {
    \n-
    526 subEntity[lastIndex++] = 8; // left edge (8)
    \n-
    527 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    528 subEntity[lastIndex++] = 5; // face dofs
    \n-
    529 subEntity[lastIndex++] = 9; // right edge (9)
    \n-
    530 }
    \n-
    531
    \n-
    532 // upper edge (11)
    \n-
    533 subEntity[lastIndex++] = 6; // corner 6
    \n-
    534 for (unsigned i = 0; i < k - 1; ++i)
    \n-
    535 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)
    \n-
    536 subEntity[lastIndex++] = 7; // corner 7
    \n-
    537
    \n-
    538 assert(numIndices==lastIndex);
    \n-
    539 }
    \n-
    540
    \n-
    541 public:
    \n-
    543 LagrangeCubeLocalCoefficients ()
    \n-
    544 : localKeys_(size())
    \n-
    545 {
    \n-
    546 if (k==0)
    \n-
    547 {
    \n-
    548 localKeys_[0] = LocalKey(0,0,0);
    \n-
    549 return;
    \n-
    550 }
    \n-
    551
    \n-
    552 if (k==1)
    \n-
    553 {
    \n-
    554 for (std::size_t i=0; i<size(); i++)
    \n-
    555 localKeys_[i] = LocalKey(i,dim,0);
    \n-
    556 return;
    \n-
    557 }
    \n-
    558
    \n-
    559 // Now: the general case
    \n-
    560
    \n-
    561 // Set up array of codimension-per-dof-number
    \n-
    562 std::vector<unsigned int> codim(size());
    \n-
    563
    \n-
    564 for (std::size_t i=0; i<codim.size(); i++)
    \n-
    565 {
    \n-
    566 codim[i] = 0;
    \n-
    567
    \n-
    568 // Codimension gets increased by 1 for each coordinate direction
    \n-
    569 // where dof is on boundary
    \n-
    570 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n-
    571 for (unsigned int j=0; j<dim; j++)
    \n-
    572 if (mIdx[j]==0 or mIdx[j]==k)
    \n-
    573 codim[i]++;
    \n-
    574 }
    \n-
    575
    \n-
    576 // Set up index vector (the index of the dof in the set of dofs of a given subentity)
    \n-
    577 // Algorithm: the 'index' has the same ordering as the dof number 'i'.
    \n-
    578 // To make it consecutive we interpret 'i' in the (k+1)-adic system, omit all digits
    \n-
    579 // that correspond to axes where the dof is on the element boundary, and transform the
    \n-
    580 // rest to the (k-1)-adic system.
    \n-
    581 std::vector<unsigned int> index(size());
    \n-
    582
    \n-
    583 for (std::size_t i=0; i<size(); i++)
    \n-
    584 {
    \n-
    585 index[i] = 0;
    \n-
    586
    \n-
    587 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n-
    588
    \n-
    589 for (int j=dim-1; j>=0; j--)
    \n-
    590 if (mIdx[j]>0 && mIdx[j]<k)
    \n-
    591 index[i] = (k-1)*index[i] + (mIdx[j]-1);
    \n-
    592 }
    \n-
    593
    \n-
    594 // Set up entity and dof numbers for each (supported) dimension separately
    \n-
    595 std::vector<unsigned int> subEntity(size());
    \n-
    596
    \n-
    597 if (dim==1) {
    \n-
    598
    \n-
    599 setup1d(subEntity);
    \n-
    600
    \n-
    601 } else if (dim==2) {
    \n-
    602
    \n-
    603 setup2d(subEntity);
    \n-
    604
    \n-
    605 } else if (dim==3) {
    \n-
    606
    \n-
    607 setup3d(subEntity);
    \n-
    608
    \n-
    609 } else
    \n-
    610 DUNE_THROW(Dune::NotImplemented, "LagrangeCubeLocalCoefficients for order " << k << " and dim == " << dim);
    \n-
    611
    \n-
    612 for (size_t i=0; i<size(); i++)
    \n-
    613 localKeys_[i] = LocalKey(subEntity[i], codim[i], index[i]);
    \n-
    614 }
    \n-
    615
    \n-
    617 static constexpr std::size_t size ()
    \n-
    618 {
    \n-
    619 return power(k+1,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
    \n-
    636 template<class LocalBasis>
    \n-
    637 class LagrangeCubeLocalInterpolation
    \n-
    638 {
    \n-
    639 public:
    \n-
    640
    \n-
    648 template<typename F, typename C>
    \n-
    649 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    650 {
    \n-
    651 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n-
    652 constexpr auto k = LocalBasis::order();
    \n-
    653 using D = typename LocalBasis::Traits::DomainFieldType;
    \n-
    654
    \n-
    655 typename LocalBasis::Traits::DomainType x;
    \n-
    656 auto&& f = Impl::makeFunctionWithCallOperator<typename LocalBasis::Traits::DomainType>(ff);
    \n-
    657
    \n-
    658 out.resize(LocalBasis::size());
    \n-
    659
    \n-
    660 // Specialization for zero-order case
    \n-
    661 if (k==0)
    \n-
    662 {
    \n-
    663 auto center = ReferenceElements<D,dim>::cube().position(0,0);
    \n-
    664 out[0] = f(center);
    \n-
    665 return;
    \n-
    666 }
    \n-
    667
    \n-
    668 // Specialization for first-order case
    \n-
    669 if (k==1)
    \n-
    670 {
    \n-
    671 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n-
    672 {
    \n-
    673 // Generate coordinate of the i-th corner of the reference cube
    \n-
    674 for (int j=0; j<dim; j++)
    \n-
    675 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n-
    676
    \n-
    677 out[i] = f(x);
    \n-
    678 }
    \n-
    679 return;
    \n-
    680 }
    \n-
    681
    \n-
    682 // The general case
    \n-
    683 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n-
    684 {
    \n-
    685 // convert index i to multiindex
    \n-
    686 std::array<unsigned int,dim> alpha(LocalBasis::multiindex(i));
    \n-
    687
    \n-
    688 // Generate coordinate of the i-th Lagrange point
    \n-
    689 for (unsigned int j=0; j<dim; j++)
    \n-
    690 x[j] = (1.0*alpha[j])/k;
    \n-
    691
    \n-
    692 out[i] = f(x);
    \n-
    693 }
    \n-
    694 }
    \n-
    695
    \n-
    696 };
    \n-
    697
    \n-
    698} } // namespace Dune::Impl
    \n-
    699
    \n-
    700namespace Dune
    \n-
    701{
    \n-
    709 template<class D, class R, int dim, int k>
    \n-
    \n-\n-
    711 {
    \n-
    712 public:
    \n-\n-
    716 Impl::LagrangeCubeLocalCoefficients<dim,k>,
    \n-
    717 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > >;
    \n-
    718
    \n-\n-
    725
    \n-
    \n-
    728 const typename Traits::LocalBasisType& localBasis () const
    \n-
    729 {
    \n-
    730 return basis_;
    \n-
    731 }
    \n-
    \n-
    732
    \n-
    \n-\n-
    736 {
    \n-
    737 return coefficients_;
    \n-
    738 }
    \n-
    \n-
    739
    \n-
    \n-\n-
    743 {
    \n-
    744 return interpolation_;
    \n-
    745 }
    \n-
    \n-
    746
    \n-
    \n-
    748 static constexpr std::size_t size ()
    \n-
    749 {
    \n-
    750 return power(k+1,dim);
    \n-
    751 }
    \n-
    \n-
    752
    \n-
    \n-
    755 static constexpr GeometryType type ()
    \n-
    756 {
    \n-
    757 return GeometryTypes::cube(dim);
    \n-
    758 }
    \n-
    \n-
    759
    \n-
    760 private:
    \n-
    761 Impl::LagrangeCubeLocalBasis<D,R,dim,k> basis_;
    \n-
    762 Impl::LagrangeCubeLocalCoefficients<dim,k> coefficients_;
    \n-
    763 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > interpolation_;
    \n-
    764 };
    \n-
    \n-
    765
    \n-
    766} // namespace Dune
    \n-
    767
    \n-
    768#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGECUBE_HH
    \n-\n-\n-
    Definition bdfmcube.hh:18
    \n-
    D DomainType
    domain type
    Definition common/localbasis.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-
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:711
    \n-
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangecube.hh:728
    \n-
    LagrangeCubeLocalFiniteElement()
    Default constructor.
    Definition lagrangecube.hh:724
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangecube.hh:742
    \n-
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangecube.hh:755
    \n-
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangecube.hh:748
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangecube.hh:735
    \n-\n-\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+\n+
    Convenience header that includes all available Raviart-Thomas local finite elements for cubes.
    \n+\n+\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 Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,774 +1,53 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+raviartthomas.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 (C) 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_RAVIARTTHOMASFINITEELEMENT_HH\n+6#define DUNE_RAVIARTTHOMASFINITEELEMENT_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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-24 // Forward declaration\n-25 template\n-26 class LagrangeCubeLocalInterpolation;\n-27\n-38 template\n-39 class LagrangeCubeLocalBasis\n-40 {\n-41 friend class\n-LagrangeCubeLocalInterpolation >;\n-42\n-43 // i-th Lagrange polynomial of degree k in one dimension\n-44 static R p(unsigned int i, D x)\n-45 {\n-46 R result(1.0);\n-47 for (unsigned int j=0; j<=k; j++)\n-48 if (j!=i) result *= (k*x-j)/((int)i-(int)j);\n-49 return result;\n-50 }\n-51\n-52 // derivative of ith Lagrange polynomial of degree k in one dimension\n-53 static R dp(unsigned int i, D x)\n-54 {\n-55 R result(0.0);\n-56\n-57 for (unsigned int j=0; j<=k; j++)\n-58 {\n-59 if (j!=i)\n-60 {\n-61 R prod( (k*1.0)/((int)i-(int)j) );\n-62 for (unsigned int l=0; l<=k; l++)\n-63 if (l!=i && l!=j)\n-64 prod *= (k*x-l)/((int)i-(int)l);\n-65 result += prod;\n-66 }\n-67 }\n-68 return result;\n-69 }\n-70\n-71 // Second derivative of j-th Lagrange polynomial of degree k in one\n-dimension\n-72 // Formula and notation taken from https://en.wikipedia.org/wiki/\n-Lagrange_polynomial#Derivatives\n-73 static R ddp(unsigned int j, D x)\n-74 {\n-75 R result(0.0);\n-76\n-77 for (unsigned int i=0; i<=k; i++)\n-78 {\n-79 if (i==j)\n-80 continue;\n-81\n-82 R sum(0);\n-83\n-84 for (unsigned int m=0; m<=k; m++)\n-85 {\n-86 if (m==i || m==j)\n-87 continue;\n-88\n-89 R prod( (k*1.0)/((int)j-(int)m) );\n-90 for (unsigned int l=0; l<=k; l++)\n-91 if (l!=i && l!=j && l!=m)\n-92 prod *= (k*x-l)/((int)j-(int)l);\n-93 sum += prod;\n-94 }\n-95\n-96 result += sum * ( (k*1.0)/((int)j-(int)i) );\n-97 }\n-98\n-99 return result;\n-100 }\n-101\n-102 // Return i as a d-digit number in the (k+1)-nary system\n-103 static std::array multiindex (unsigned int i)\n-104 {\n-105 std::array alpha;\n-106 for (unsigned int j=0; j,R,1,FieldVector,FieldMatrix\n->;\n-116\n-119 static constexpr unsigned int size ()\n-120 {\n-121 return power(k+1, dim);\n-122 }\n-123\n-125 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n-126 std::vector& out) const\n-127 {\n-128 out.resize(size());\n-129\n-130 // Specialization for zero-order case\n-131 if (k==0)\n-132 {\n-133 out[0] = 1;\n-134 return;\n-135 }\n-136\n-137 if (k==1)\n-138 {\n-139 for (size_t i=0; i alpha(multiindex(i));\n-155\n-156 // initialize product\n-157 out[i] = 1.0;\n-158\n-159 // dimension by dimension\n-160 for (unsigned int j=0; j& out) const\n-172 {\n-173 out.resize(size());\n-174\n-175 // Specialization for k==0\n-176 if (k==0)\n-177 {\n-178 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n-179 return;\n-180 }\n-181\n-182 // Specialization for k==1\n-183 if (k==1)\n-184 {\n-185 // Loop over all shape functions\n-186 for (size_t i=0; i alpha(multiindex(i));\n-213\n-214 // Loop over all coordinate directions\n-215 for (unsigned int j=0; j& order,\n-236 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 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n-240\n-241 out.resize(size());\n-242\n-243 if (k==0)\n-244 {\n-245 out[0] = (totalOrder==0);\n-246 return;\n-247 }\n-248\n-249 if (k==1)\n-250 {\n-251 if (totalOrder == 0)\n-252 {\n-253 evaluateFunction(in, out);\n-254 }\n-255 else if (totalOrder == 1)\n-256 {\n-257 out.resize(size());\n-258\n-259 auto direction = std::distance(order.begin(), std::find(order.begin(),\n-order.end(), 1));\n-260 if (direction >= dim)\n-261 DUNE_THROW(RangeError, \"Direction of partial derivative not found!\");\n-262\n-263 // Loop over all shape functions\n-264 for (std::size_t i = 0; i < size(); ++i)\n-265 {\n-266 // Initialize: the overall expression is a product\n-267 // if j-th bit of i is set to 1, otherwise to -1\n-268 out[i] = (i & (1< alpha(multiindex(i));\n-285\n-286 // Initialize: the overall expression is a product\n-287 out[i][0] = 1.0;\n-288\n-289 // rest of the product\n-290 for (std::size_t l=0; l1\n-317\n-318 // Loop over all shape functions\n-319 for (size_t i=0; i alpha(multiindex(i));\n-323\n-324 // Initialize: the overall expression is a product\n-325 out[i][0] = 1.0;\n-326\n-327 // rest of the product\n-328 for (std::size_t l=0; l\n-361 class LagrangeCubeLocalCoefficients\n-362 {\n-363 // Return i as a d-digit number in the (k+1)-nary system\n-364 static std::array multiindex (unsigned int i)\n-365 {\n-366 std::array alpha;\n-367 for (unsigned int j=0; j& subEntity)\n-377 {\n-378 assert(k>0);\n-379\n-380 unsigned lastIndex=0;\n-381\n-382 /* edge and vertex numbering\n-383 0----0----1\n-384 */\n-385\n-386 // edge (0)\n-387 subEntity[lastIndex++] = 0; // corner 0\n-388 for (unsigned i = 0; i < k - 1; ++i)\n-389 subEntity[lastIndex++] = 0; // inner dofs of element (0)\n-390\n-391 subEntity[lastIndex++] = 1; // corner 1\n-392\n-393 assert(power(k+1,dim)==lastIndex);\n-394 }\n-395\n-396 void setup2d(std::vector& subEntity)\n-397 {\n-398 assert(k>0);\n-399\n-400 unsigned lastIndex=0;\n-401\n-402 // LocalKey: entity number, entity codim, dof indices within each entity\n-403 /* edge and vertex numbering\n-404 2----3----3\n-405 | |\n-406 | |\n-407 0 1\n-408 | |\n-409 | |\n-410 0----2----1\n-411 */\n-412\n-413 // lower edge (2)\n-414 subEntity[lastIndex++] = 0; // corner 0\n-415 for (unsigned i = 0; i < k - 1; ++i)\n-416 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)\n-417\n-418 subEntity[lastIndex++] = 1; // corner 1\n-419\n-420 // iterate from bottom to top over inner edge dofs\n-421 for (unsigned e = 0; e < k - 1; ++e) {\n-422 subEntity[lastIndex++] = 0; // left edge (0)\n-423 for (unsigned i = 0; i < k - 1; ++i)\n-424 subEntity[lastIndex++] = 0; // face dofs\n-425 subEntity[lastIndex++] = 1; // right edge (1)\n-426 }\n-427\n-428 // upper edge (3)\n-429 subEntity[lastIndex++] = 2; // corner 2\n-430 for (unsigned i = 0; i < k - 1; ++i)\n-431 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)\n-432\n-433 subEntity[lastIndex++] = 3; // corner 3\n-434\n-435 assert(power(k+1,dim)==lastIndex);\n-436 }\n-437\n-438 void setup3d(std::vector& subEntity)\n-439 {\n-440 assert(k>0);\n-441\n-442 unsigned lastIndex=0;\n-443#ifndef NDEBUG\n-444 const unsigned numIndices = power(k+1,dim);\n-445 const unsigned numFaceIndices = power(k+1,dim-1);\n-446#endif\n-447 const unsigned numInnerEdgeDofs = k-1;\n-448\n-449 // LocalKey: entity number, entity codim, dof indices within each entity\n-450 /* edge and vertex numbering\n-451\n-452 6---(11)--7 6---------7\n-453 /| /| /| (5) /|\n-454 (8)| (9)| / | top / |\n-455 / (2) / (3) / |(3)bac/k |\n-456 4---(10)--5 | 4---------5 |\n-457 | | | | left|(0)| |(1)|right\n-458 | 2--(7)|---3 | 2-----|---3\n-459 (0) / (1) / |(2)front | /\n-460 |(4) |(5) | / (4) | /\n-461 |/ |/ |/ bottom |/\n-462 0---(6)---1 0---------1\n-463 */\n-464\n-465 // bottom face (4)\n-466 lastIndex=0;\n-467 // lower edge (6)\n-468 subEntity[lastIndex++] = 0; // corner 0\n-469 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-470 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)\n-471\n-472 subEntity[lastIndex++] = 1; // corner 1\n-473\n-474 // iterate from bottom to top over inner edge dofs\n-475 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n-476 subEntity[lastIndex++] = 4; // left edge (4)\n-477 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-478 subEntity[lastIndex++] = 4; // inner face dofs\n-479 subEntity[lastIndex++] = 5; // right edge (5)\n-480 }\n-481\n-482 // upper edge (7)\n-483 subEntity[lastIndex++] = 2; // corner 2\n-484 for (unsigned i = 0; i < k - 1; ++i)\n-485 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)\n-486 subEntity[lastIndex++] = 3; // corner 3\n-487\n-488 assert(numFaceIndices==lastIndex); // added 1 face so far\n-490\n-492 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {\n-493\n-494 // lower edge (connecting edges 0 and 1)\n-495 subEntity[lastIndex++] = 0; // dof on edge 0\n-496 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-497 subEntity[lastIndex++] = 2; // dof in front face\n-498 subEntity[lastIndex++] = 1; // dof on edge 1\n-499\n-500 // iterate from bottom to top over inner edge dofs\n-501 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n-502 subEntity[lastIndex++] = 0; // on left face (0)\n-503 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-504 subEntity[lastIndex++] = 0; // volume dofs\n-505 subEntity[lastIndex++] = 1; // right face (1)\n-506 }\n-507\n-508 // upper edge (connecting edges 0 and 1)\n-509 subEntity[lastIndex++] = 2; // dof on edge 2\n-510 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n-511 subEntity[lastIndex++] = 3; // dof on rear face (3)\n-512 subEntity[lastIndex++] = 3; // dof on edge 3\n-513\n-514 assert(lastIndex==(f+1+1)*numFaceIndices);\n-515 }\n-516\n-518 // lower edge (10)\n-519 subEntity[lastIndex++] = 4; // corner 4\n-520 for (unsigned i = 0; i < k - 1; ++i)\n-521 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)\n-522 subEntity[lastIndex++] = 5; // corner 5\n-523\n-524 // iterate from bottom to top over inner edge dofs\n-525 for (unsigned e = 0; e < k - 1; ++e) {\n-526 subEntity[lastIndex++] = 8; // left edge (8)\n-527 for (unsigned i = 0; i < k - 1; ++i)\n-528 subEntity[lastIndex++] = 5; // face dofs\n-529 subEntity[lastIndex++] = 9; // right edge (9)\n-530 }\n-531\n-532 // upper edge (11)\n-533 subEntity[lastIndex++] = 6; // corner 6\n-534 for (unsigned i = 0; i < k - 1; ++i)\n-535 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)\n-536 subEntity[lastIndex++] = 7; // corner 7\n-537\n-538 assert(numIndices==lastIndex);\n-539 }\n-540\n-541 public:\n-543 LagrangeCubeLocalCoefficients ()\n-544 : localKeys_(size())\n-545 {\n-546 if (k==0)\n-547 {\n-548 localKeys_[0] = LocalKey(0,0,0);\n-549 return;\n-550 }\n-551\n-552 if (k==1)\n-553 {\n-554 for (std::size_t i=0; i codim(size());\n-563\n-564 for (std::size_t i=0; i mIdx = multiindex(i);\n-571 for (unsigned int j=0; j index(size());\n-582\n-583 for (std::size_t i=0; i mIdx = multiindex(i);\n-588\n-589 for (int j=dim-1; j>=0; j--)\n-590 if (mIdx[j]>0 && mIdx[j] subEntity(size());\n-596\n-597 if (dim==1) {\n-598\n-599 setup1d(subEntity);\n-600\n-601 } else if (dim==2) {\n-602\n-603 setup2d(subEntity);\n-604\n-605 } else if (dim==3) {\n-606\n-607 setup3d(subEntity);\n-608\n-609 } else\n-610 DUNE_THROW(Dune::NotImplemented, \"LagrangeCubeLocalCoefficients for order \"\n-<< k << \" and dim == \" << dim);\n-611\n-612 for (size_t i=0; i localKeys_;\n-630 };\n-631\n-636 template\n-637 class LagrangeCubeLocalInterpolation\n-638 {\n-639 public:\n-640\n-648 template\n-649 void interpolate (const F& ff, std::vector& out) const\n-650 {\n-651 constexpr auto dim = LocalBasis::Traits::dimDomain;\n-652 constexpr auto k = LocalBasis::order();\n-653 using D = typename LocalBasis::Traits::DomainFieldType;\n-654\n-655 typename LocalBasis::Traits::DomainType x;\n-656 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-657\n-658 out.resize(LocalBasis::size());\n-659\n-660 // Specialization for zero-order case\n-661 if (k==0)\n-662 {\n-663 auto center = ReferenceElements::cube().position(0,0);\n-664 out[0] = f(center);\n-665 return;\n-666 }\n-667\n-668 // Specialization for first-order case\n-669 if (k==1)\n-670 {\n-671 for (unsigned int i=0; i alpha(LocalBasis::multiindex(i));\n-687\n-688 // Generate coordinate of the i-th Lagrange point\n-689 for (unsigned int j=0; j\n-_\b7_\b1_\b0 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-711 {\n-712 public:\n-_\b7_\b1_\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-_\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-716 Impl::LagrangeCubeLocalCoefficients,\n-717 Impl::LagrangeCubeLocalInterpolation > >;\n-718\n-_\b7_\b2_\b4 _\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-725\n-_\b7_\b2_\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-729 {\n-730 return basis_;\n-731 }\n-732\n-_\b7_\b3_\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-736 {\n-737 return coefficients_;\n-738 }\n-739\n-_\b7_\b4_\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-743 {\n-744 return interpolation_;\n-745 }\n-746\n-_\b7_\b4_\b8 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n-749 {\n-750 return power(k+1,dim);\n-751 }\n-752\n-_\b7_\b5_\b5 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-756 {\n-757 return GeometryTypes::cube(dim);\n-758 }\n-759\n-760 private:\n-761 Impl::LagrangeCubeLocalBasis basis_;\n-762 Impl::LagrangeCubeLocalCoefficients coefficients_;\n-763 Impl::LagrangeCubeLocalInterpolation > interpolation_;\n-764 };\n-765\n-766} // namespace Dune\n-767\n-768#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:_\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: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:_\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:711\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:728\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_\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-LagrangeCubeLocalFiniteElement()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:724\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:742\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:755\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:748\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:735\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+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_\b0_\bc_\bu_\bb_\be_\b2_\bd_\b._\bh_\bh\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_\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_\bp_\by_\br_\ba_\bm_\bi_\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_\b0_\bp_\br_\bi_\bs_\bm_\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_\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_\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_\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_\b1_\b2_\bd_\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/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: qk.hh File Reference\n+dune-localfunctions: raviartthomas02dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    qk.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    raviartthomas02dlocalcoefficients.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangecube.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+Classes

    class  Dune::RT02DLocalCoefficients
     Layout map for RT0 elements. More...
     
    \n \n \n \n-

    \n Namespaces

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

    \n-Typedefs

    template<class D , class R , int d, int k>
    using Dune::QkLocalFiniteElement = LagrangeCubeLocalFiniteElement< D, R, d, k >
     General Lagrange finite element for cubes with arbitrary dimension and polynomial order.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-qk.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/_\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+ * _\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+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/_\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_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for RT0 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:_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R, d, k\n- >\n-\u00a0 General Lagrange finite element for cubes with arbitrary dimension and\n- polynomial 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/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: qk.hh Source File\n+dune-localfunctions: raviartthomas02dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,78 @@\n
    \n \n \n \n \n \n \n
    \n-
    qk.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 (C) 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_QK_LOCALFINITEELEMENT_HH
    \n-
    7#define DUNE_LOCALFUNCTIONS_QK_LOCALFINITEELEMENT_HH
    \n-
    8
    \n-\n-
    10
    \n-
    11#warning This header is deprecated
    \n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    25 template<class D, class R, int d, int k>
    \n-\n-
    27 [[deprecated("use LagrangeCubeLocalFiniteElement instead")]]
    \n-\n-
    29
    \n-
    30}
    \n-
    31
    \n-
    32#endif
    \n-\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+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    \n+\n+
    24 {
    \n+
    25 public:
    \n+
    \n+\n+
    28 {
    \n+
    29 for (std::size_t i=0; i<3; i++)
    \n+
    30 li[i] = LocalKey(i,1,0);
    \n+
    31 }
    \n+
    \n+
    32
    \n+
    \n+
    34 std::size_t size () const
    \n+
    35 {
    \n+
    36 return 3;
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    \n+
    40 const LocalKey& localKey (std::size_t i) const
    \n+
    41 {
    \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-
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:711
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Layout map for RT0 elements.
    Definition raviartthomas02dlocalcoefficients.hh:24
    \n+
    RT02DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas02dlocalcoefficients.hh:27
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas02dlocalcoefficients.hh:40
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas02dlocalcoefficients.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,41 +1,76 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-qk.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 (C) 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_QK_LOCALFINITEELEMENT_HH\n-7#define DUNE_LOCALFUNCTIONS_QK_LOCALFINITEELEMENT_HH\n-8\n-9#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-10\n-11#warning This header is deprecated\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-25 template\n-_\b2_\b6 using _\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-27 [[deprecated(\"use LagrangeCubeLocalFiniteElement instead\")]]\n-28 = _\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_\b,_\bk_\b>;\n-29\n-30}\n-31\n-32#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\b._\bh_\bh\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+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+_\b2_\b3 class _\bR_\bT_\b0_\b2_\bD_\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 _\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+28 {\n+29 for (std::size_t i=0; i<3; i++)\n+30 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+31 }\n+32\n+_\b3_\b4 std::size_t _\bs_\bi_\bz_\be () const\n+35 {\n+36 return 3;\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 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_\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:711\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:23\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+Layout map for RT0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.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_\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: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_\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:40\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: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/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: prismp1.hh File Reference\n+dune-localfunctions: raviartthomas02dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,39 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n-
    prismp1.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    raviartthomas02dlocalinterpolation.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangeprism.hh>
    \n+
    #include <cmath>
    \n+#include <array>
    \n+#include <bitset>
    \n+#include <vector>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::RT02DLocalInterpolation< LB >
     
    \n \n \n \n-

    \n Namespaces

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

    \n-Typedefs

    template<class D , class R >
    using Dune::PrismP1LocalFiniteElement = LagrangePrismLocalFiniteElement< D, R, 1 >
     First-order Lagrangian finite element on a prism.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-prismp1.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/_\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+ * _\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+raviartthomas02dlocalinterpolation.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_\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_\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-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-template\n-using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\bi_\bs_\bm_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n- 1 >\n-\u00a0 First-order Lagrangian finite element on a prism.\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/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: prismp1.hh Source File\n+dune-localfunctions: raviartthomas02dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,46 +70,97 @@\n
    \n \n \n \n \n \n \n
    \n-
    prismp1.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 (C) 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_P13DLOCALFINITEELEMENT_HH
    \n-
    6#define DUNE_P13DLOCALFINITEELEMENT_HH
    \n+
    5#ifndef DUNE_RT02DLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_RT02DLOCALINTERPOLATION_HH
    \n
    7
    \n-\n-
    9
    \n-
    10#warning This header is deprecated
    \n-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n-
    14
    \n-
    19 template<class D, class R>
    \n-\n-
    21 [[deprecated("use LagrangePrismLocalFiniteElement instead")]]
    \n-\n-
    23
    \n-
    24}
    \n-
    25
    \n-
    26#endif
    \n-\n+
    8#include <cmath>
    \n+
    9#include <array>
    \n+
    10#include <bitset>
    \n+
    11#include <vector>
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16 template<class LB>
    \n+
    \n+\n+
    18 {
    \n+
    19 public:
    \n+
    20
    \n+
    \n+
    22 RT02DLocalInterpolation (std::bitset<3> s = 0)
    \n+
    23 {
    \n+
    24 using std::sqrt;
    \n+
    25 for (std::size_t i=0; i<sign_.size(); i++)
    \n+
    26 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    27
    \n+
    28 m_[0] = {0.5, 0.0};
    \n+
    29 m_[1] = {0.0, 0.5};
    \n+
    30 m_[2] = {0.5, 0.5};
    \n+
    31 n_[0] = {0.0, -1.0};
    \n+
    32 n_[1] = {-1.0, 0.0};
    \n+
    33 n_[2] = {1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n+
    34 c_[0] = ( 0.5*n_[0][0] - 1.0*n_[0][1]);
    \n+
    35 c_[1] = (-1.0*n_[1][0] + 0.5*n_[1][1]);
    \n+
    36 c_[2] = ( 0.5*n_[2][0] + 0.5*n_[2][1]);
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    39 template<typename F, typename C>
    \n+
    \n+
    40 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    41 {
    \n+
    42 // f gives v*outer normal at a point on the edge!
    \n+
    43 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    44
    \n+
    45 out.resize(3);
    \n+
    46
    \n+
    47 for (int i=0; i<3; i++)
    \n+
    48 {
    \n+
    49 auto y = f(m_[i]);
    \n+
    50 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];
    \n+
    51 }
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    54 private:
    \n+
    55 // Edge orientations
    \n+
    56 std::array<typename LB::Traits::RangeFieldType,3> sign_;
    \n+
    57 // Edge midpoints of the reference triangle
    \n+
    58 std::array<typename LB::Traits::DomainType,3> m_;
    \n+
    59 // Unit outer normals of the reference triangle
    \n+
    60 std::array<typename LB::Traits::DomainType,3> n_;
    \n+
    61 // Inverse triangle edge length
    \n+
    62 std::array<typename LB::Traits::RangeFieldType,3> c_;
    \n+
    63 };
    \n+
    \n+
    64}
    \n+
    65
    \n+
    66#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:652
    \n+
    Definition raviartthomas02dlocalinterpolation.hh:18
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas02dlocalinterpolation.hh:40
    \n+
    RT02DLocalInterpolation(std::bitset< 3 > s=0)
    Constructor with given set of edge orientations.
    Definition raviartthomas02dlocalinterpolation.hh:22
    \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,91 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-prismp1.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 (C) 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_P13DLOCALFINITEELEMENT_HH\n-6#define DUNE_P13DLOCALFINITEELEMENT_HH\n+5#ifndef DUNE_RT02DLOCALINTERPOLATION_HH\n+6#define DUNE_RT02DLOCALINTERPOLATION_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/_\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-9\n-10#warning This header is deprecated\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-14\n-19 template\n-_\b2_\b0 using _\bP_\br_\bi_\bs_\bm_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n-21 [[deprecated(\"use LagrangePrismLocalFiniteElement instead\")]]\n-22 = _\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-23\n-24}\n-25\n-26#endif\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\b._\bh_\bh\n+8#include \n+9#include \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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16 template\n+_\b1_\b7 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+18 {\n+19 public:\n+20\n+_\b2_\b2 _\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+23 {\n+24 using std::sqrt;\n+25 for (std::size_t i=0; i\n+_\b4_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+41 {\n+42 // f gives v*outer normal at a point on the edge!\n+43 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+44\n+45 out.resize(3);\n+46\n+47 for (int i=0; i<3; i++)\n+48 {\n+49 auto y = f(m_[i]);\n+50 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];\n+51 }\n+52 }\n+53\n+54 private:\n+55 // Edge orientations\n+56 std::array sign_;\n+57 // Edge midpoints of the reference triangle\n+58 std::array m_;\n+59 // Unit outer normals of the reference triangle\n+60 std::array n_;\n+61 // Inverse triangle edge length\n+62 std::array c_;\n+63 };\n+64}\n+65\n+66#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_\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:652\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: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_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:40\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:22\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/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: p0.hh File Reference\n+dune-localfunctions: raviartthomas02dlocalbasis.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-
    p0.hh File Reference
    \n+
    raviartthomas02dlocalbasis.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+
    #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 Classes

    class  Dune::P0LocalFiniteElement< D, R, d >
     The local p0 finite element on all types of reference elements. More...
    class  Dune::RT02DLocalBasis< D, R >
     Lowest 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,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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-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+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 _\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:_\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 Lowest 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/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: p0.hh Source File\n+dune-localfunctions: raviartthomas02dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,118 +70,138 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    p0.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 (C) 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_RT0TRIANGLELOCALBASIS_HH
    \n+
    6#define DUNE_RT0TRIANGLELOCALBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <numeric>
    \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+
    10#include <dune/common/fmatrix.hh>
    \n+
    11
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    24 template<class D, class R>
    \n+
    \n+\n+
    26 {
    \n+
    27 public:
    \n+
    28 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n+
    29 Dune::FieldMatrix<R,2,2> > Traits;
    \n+
    30
    \n+
    \n+
    32 RT02DLocalBasis (std::bitset<3> s = 0)
    \n+
    33 {
    \n+
    34 for (int i=0; i<3; i++)
    \n+
    35 sign_[i] = s[i] ? -1.0 : 1.0;
    \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-
    \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+
    \n+
    39 unsigned int size () const
    \n+
    40 {
    \n+
    41 return 3;
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+
    45 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    46 std::vector<typename Traits::RangeType>& out) const
    \n+
    47 {
    \n+
    48 out.resize(3);
    \n+
    49 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};
    \n+
    50 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};
    \n+
    51 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};
    \n+
    52 }
    \n+
    \n+
    53
    \n+
    55 inline void
    \n+
    \n+
    56 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    57 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    58 {
    \n+
    59 out.resize(3);
    \n+
    60 for (int i=0; i<3; i++)
    \n+
    61 {
    \n+
    62 out[i][0] = {sign_[i], 0};
    \n+
    63 out[i][1] = { 0, sign_[i]};
    \n+
    64 }
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    \n+
    68 void partial (const std::array<unsigned int, 2>& order,
    \n+
    69 const typename Traits::DomainType& in, // position
    \n+
    70 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    71 {
    \n+
    72 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    73 if (totalOrder == 0) {
    \n+
    74 evaluateFunction(in, out);
    \n+
    75 } else if (totalOrder == 1) {
    \n+
    76 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    77 out.resize(size());
    \n
    78
    \n-
    79}
    \n-
    80
    \n-
    81#endif
    \n-\n-\n-\n-\n+
    79 for (int i=0; i<3; i++)
    \n+
    80 {
    \n+
    81 out[i][direction] = sign_[i];
    \n+
    82 out[i][1-direction] = 0;
    \n+
    83 }
    \n+
    84 } else {
    \n+
    85 out.resize(size());
    \n+
    86 for (std::size_t i = 0; i < size(); ++i)
    \n+
    87 for (std::size_t j = 0; j < 2; ++j)
    \n+
    88 out[i][j] = 0;
    \n+
    89 }
    \n+
    90
    \n+
    91 }
    \n+
    \n+
    92
    \n+
    \n+
    94 unsigned int order () const
    \n+
    95 {
    \n+
    96 return 1;
    \n+
    97 }
    \n+
    \n+
    98
    \n+
    99 private:
    \n+
    100
    \n+
    101 // Signs of the edge normals
    \n+
    102 std::array<R,3> sign_;
    \n+
    103 };
    \n+
    \n+
    104}
    \n+
    105#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-
    Constant shape function.
    Definition p0localbasis.hh:30
    \n-
    Layout map for P0 elements.
    Definition p0localcoefficients.hh:24
    \n-
    Definition p0localinterpolation.hh:18
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Lowest order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas02dlocalbasis.hh:26
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas02dlocalbasis.hh:94
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas02dlocalbasis.hh:56
    \n+
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas02dlocalbasis.hh:29
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas02dlocalbasis.hh:45
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas02dlocalbasis.hh:39
    \n+
    RT02DLocalBasis(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas02dlocalbasis.hh:32
    \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:68
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,127 +1,150 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RT0TRIANGLELOCALBASIS_HH\n+6#define DUNE_RT0TRIANGLELOCALBASIS_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 \"_\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+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+24 template\n+_\b2_\b5 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\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<_\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+_\b2_\b9 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+30\n+_\b3_\b2 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s = 0)\n+33 {\n+34 for (int i=0; i<3; i++)\n+35 sign_[i] = s[i] ? -1.0 : 1.0;\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+_\b3_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+40 {\n+41 return 3;\n+42 }\n+43\n+_\b4_\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+46 std::vector& out) const\n+47 {\n+48 out.resize(3);\n+49 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};\n+50 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};\n+51 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};\n+52 }\n+53\n+55 inline void\n+_\b5_\b6 _\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+57 std::vector& out) const // return value\n+58 {\n+59 out.resize(3);\n+60 for (int i=0; i<3; i++)\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+62 out[i][0] = {sign_[i], 0};\n+63 out[i][1] = { 0, sign_[i]};\n+64 }\n+65 }\n+66\n+_\b6_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+69 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+70 std::vector& out) const // return value\n+71 {\n+72 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+73 if (totalOrder == 0) {\n+74 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+75 } else if (totalOrder == 1) {\n+76 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+77 out.resize(_\bs_\bi_\bz_\be());\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_\bb_\ba_\bs_\bi_\bs_\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+79 for (int i=0; i<3; i++)\n+80 {\n+81 out[i][direction] = sign_[i];\n+82 out[i][1-direction] = 0;\n+83 }\n+84 } else {\n+85 out.resize(_\bs_\bi_\bz_\be());\n+86 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+87 for (std::size_t j = 0; j < 2; ++j)\n+88 out[i][j] = 0;\n+89 }\n+90\n+91 }\n+92\n+_\b9_\b4 unsigned int _\bo_\br_\bd_\be_\br () const\n+95 {\n+96 return 1;\n+97 }\n+98\n+99 private:\n+100\n+101 // Signs of the edge normals\n+102 std::array sign_;\n+103 };\n+104}\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_\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:34\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:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Lowest order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:26\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:94\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:56\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:29\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:45\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-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-Constant shape function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:30\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-Layout map for P0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:24\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:18\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:39\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:32\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:68\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/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: lagrangecoefficients.hh File Reference\n+dune-localfunctions: raviartthomaslfecache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,44 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    lagrangecoefficients.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    raviartthomaslfecache.hh File Reference
    \n \n
    \n-
    #include <vector>
    \n-#include <dune/common/fvector.hh>
    \n+
    #include <tuple>
    \n+#include <utility>
    \n #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/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-Classes

    struct  Dune::LagrangeCoefficientsFactory< LP, dim, F >
     
    \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,23 +1,29 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-lagrangecoefficients.hh File Reference\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 <_\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+#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-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+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/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: lagrangecoefficients.hh Source File\n+dune-localfunctions: raviartthomaslfecache.hh Source File\n \n \n \n \n \n \n \n@@ -70,81 +70,124 @@\n
    \n \n \n \n \n \n \n
    \n-
    lagrangecoefficients.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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11
    \n-
    12#include <dune/geometry/type.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-\n-\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+
    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+
    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-
    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+
    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,80 +1,134 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASLFECACHE_HH\n 7\n-8#include \n-9\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 <_\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+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-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+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+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_\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+_\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/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: emptypoints.hh File Reference\n+dune-localfunctions: raviartthomas0cube2d.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-
    emptypoints.hh File Reference
    \n+
    raviartthomas0cube2d.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

    \n Classes

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

    Go to the source code of this file.

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

    \n Classes

    class  Dune::P0LocalInterpolation< LB >
    class  Dune::RT1Cube3DLocalInterpolation< LB >
     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,22 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-p0localinterpolation.hh File Reference\n+raviartthomas1cube3dlocalinterpolation.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_\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:_\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/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: p0localinterpolation.hh Source File\n+dune-localfunctions: raviartthomas1cube3dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,75 +70,157 @@\n
    \n \n \n \n \n \n \n
    \n-
    p0localinterpolation.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n
    7
    \n
    8#include <vector>
    \n-
    9#include <dune/geometry/referenceelements.hh>
    \n-\n-
    11
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+\n
    12
    \n
    13namespace Dune
    \n
    14{
    \n-
    15
    \n-
    16 template<class LB>
    \n-
    \n-\n-
    18 {
    \n-
    19 public:
    \n-
    \n-
    20 P0LocalInterpolation (const GeometryType& gt) : gt_(gt)
    \n-
    21 {}
    \n-
    \n-
    22
    \n-
    24 template<typename F, typename C>
    \n-
    \n-
    25 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    26 {
    \n-
    27 typedef typename LB::Traits::DomainType DomainType;
    \n-
    28 typedef typename LB::Traits::DomainFieldType DF;
    \n-
    29 const int dim=LB::Traits::dimDomain;
    \n-
    30
    \n-
    31 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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+
    23 template<class LB>
    \n+
    \n+\n+
    25 {
    \n+
    26
    \n+
    27 public:
    \n+
    28
    \n+
    \n+
    34 RT1Cube3DLocalInterpolation (std::bitset<6> s = 0)
    \n+
    35 {
    \n+
    36 for (size_t i=0; i<6; i++)
    \n+
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n
    38
    \n-
    39 private:
    \n-
    40 GeometryType gt_;
    \n-
    41 };
    \n-
    \n-
    42
    \n-
    43}
    \n-
    44
    \n-
    45#endif
    \n+
    39 n_[0] = {-1.0, 0.0, 0.0};
    \n+
    40 n_[1] = { 1.0, 0.0, 0.0};
    \n+
    41 n_[2] = { 0.0, -1.0, 0.0};
    \n+
    42 n_[3] = { 0.0, 1.0, 0.0};
    \n+
    43 n_[4] = { 0.0, 0.0, -1.0};
    \n+
    44 n_[5] = { 0.0, 0.0, 1.0};
    \n+
    45 }
    \n+
    \n+
    46
    \n+
    55 template<class F, class C>
    \n+
    \n+
    56 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    57 {
    \n+
    58 // f gives v*outer normal at a point on the edge!
    \n+
    59 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    60 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    61
    \n+
    62 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    63
    \n+
    64 out.resize(36);
    \n+
    65 fill(out.begin(), out.end(), 0.0);
    \n+
    66
    \n+
    67 const int qOrder = 3;
    \n+
    68 const auto& rule1 = QuadratureRules<Scalar,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    69
    \n+
    70 for (auto&& qp : rule1)
    \n+
    71 {
    \n+
    72 Dune::FieldVector<Scalar,2> qPos = qp.position();
    \n+
    73 typename LB::Traits::DomainType localPos;
    \n+
    74
    \n+
    75 localPos = {0.0, qPos[0], qPos[1]};
    \n+
    76 auto y = f(localPos);
    \n+
    77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_[0];
    \n+
    78 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+
    79 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+
    80 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+
    81
    \n+
    82 localPos = {1.0, qPos[0], qPos[1]};
    \n+
    83 y = f(localPos);
    \n+
    84 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_[1];
    \n+
    85 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+
    86 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+
    87 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+
    88
    \n+
    89 localPos = {qPos[0], 0.0, qPos[1]};
    \n+
    90 y = f(localPos);
    \n+
    91 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_[2];
    \n+
    92 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+
    93 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+
    94 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+
    95
    \n+
    96 localPos = {qPos[0], 1.0, qPos[1]};
    \n+
    97 y = f(localPos);
    \n+
    98 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_[3];
    \n+
    99 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+
    100 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+
    101 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+
    102
    \n+
    103 localPos = {qPos[0], qPos[1], 0.0};
    \n+
    104 y = f(localPos);
    \n+
    105 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_[4];
    \n+
    106 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+
    107 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+
    108 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+
    109
    \n+
    110 localPos = {qPos[0], qPos[1], 1.0};
    \n+
    111 y = f(localPos);
    \n+
    112 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_[5];
    \n+
    113 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+
    114 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+
    115 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+
    116 }
    \n+
    117
    \n+
    118 const auto& rule2 = QuadratureRules<Vector,3>::rule(GeometryTypes::cube(3), qOrder);
    \n+
    119 for (auto&& qp : rule2)
    \n+
    120 {
    \n+
    121 FieldVector<double,3> qPos = qp.position();
    \n+
    122
    \n+
    123 auto y = f(qPos);
    \n+
    124 out[24] += y[0]*qp.weight();
    \n+
    125 out[25] += y[1]*qp.weight();
    \n+
    126 out[26] += y[2]*qp.weight();
    \n+
    127 out[27] += y[0]*qPos[1]*qp.weight();
    \n+
    128 out[28] += y[0]*qPos[2]*qp.weight();
    \n+
    129 out[29] += y[1]*qPos[0]*qp.weight();
    \n+
    130 out[30] += y[1]*qPos[2]*qp.weight();
    \n+
    131 out[31] += y[2]*qPos[0]*qp.weight();
    \n+
    132 out[32] += y[2]*qPos[1]*qp.weight();
    \n+
    133 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();
    \n+
    134 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();
    \n+
    135 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();
    \n+
    136 }
    \n+
    137 }
    \n+
    \n+
    138
    \n+
    139 private:
    \n+
    140 // Facet orientations
    \n+
    141 std::array<typename LB::Traits::RangeFieldType, 6> sign_;
    \n+
    142
    \n+
    143 // Facet normals
    \n+
    144 std::array<typename LB::Traits::DomainType, 6> n_;
    \n+
    145 };
    \n+
    \n+
    146}
    \n+
    147#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition p0localinterpolation.hh:18
    \n-
    P0LocalInterpolation(const GeometryType &gt)
    Definition p0localinterpolation.hh:20
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition p0localinterpolation.hh:25
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalinterpolation.hh:25
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube3dlocalinterpolation.hh:56
    \n+
    RT1Cube3DLocalInterpolation(std::bitset< 6 > s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3dlocalinterpolation.hh:34
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,70 +1,180 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\n 7\n 8#include \n-9#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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-11\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 12\n 13namespace _\bD_\bu_\bn_\be\n 14{\n-15\n-16 template\n-_\b1_\b7 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-18 {\n-19 public:\n-_\b2_\b0 _\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-21 {}\n-22\n-24 template\n-_\b2_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-26 {\n-27 typedef typename LB::Traits::DomainType DomainType;\n-28 typedef typename LB::Traits::DomainFieldType DF;\n-29 const int dim=LB::Traits::dimDomain;\n-30\n-31 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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+23 template\n+_\b2_\b4 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+25 {\n+26\n+27 public:\n+28\n+_\b3_\b4 _\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+35 {\n+36 for (size_t i=0; i<6; i++)\n+37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n 38\n-39 private:\n-40 GeometryType gt_;\n-41 };\n-42\n-43}\n-44\n-45#endif\n+39 n_[0] = {-1.0, 0.0, 0.0};\n+40 n_[1] = { 1.0, 0.0, 0.0};\n+41 n_[2] = { 0.0, -1.0, 0.0};\n+42 n_[3] = { 0.0, 1.0, 0.0};\n+43 n_[4] = { 0.0, 0.0, -1.0};\n+44 n_[5] = { 0.0, 0.0, 1.0};\n+45 }\n+46\n+55 template\n+_\b5_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+57 {\n+58 // f gives v*outer normal at a point on the edge!\n+59 typedef typename LB::Traits::RangeFieldType Scalar;\n+60 typedef typename LB::Traits::DomainFieldType Vector;\n+61\n+62 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+63\n+64 out.resize(36);\n+65 fill(out.begin(), out.end(), 0.0);\n+66\n+67 const int qOrder = 3;\n+68 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(2),\n+qOrder);\n+69\n+70 for (auto&& qp : rule1)\n+71 {\n+72 Dune::FieldVector qPos = qp.position();\n+73 typename LB::Traits::DomainType localPos;\n+74\n+75 localPos = {0.0, qPos[0], qPos[1]};\n+76 auto y = f(localPos);\n+77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_\n+[0];\n+78 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+79 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+80 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+81\n+82 localPos = {1.0, qPos[0], qPos[1]};\n+83 y = f(localPos);\n+84 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_\n+[1];\n+85 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+86 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+87 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+88\n+89 localPos = {qPos[0], 0.0, qPos[1]};\n+90 y = f(localPos);\n+91 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_\n+[2];\n+92 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+93 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+94 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+95\n+96 localPos = {qPos[0], 1.0, qPos[1]};\n+97 y = f(localPos);\n+98 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_\n+[3];\n+99 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+100 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+101 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+102\n+103 localPos = {qPos[0], qPos[1], 0.0};\n+104 y = f(localPos);\n+105 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_\n+[4];\n+106 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+107 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+108 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+109\n+110 localPos = {qPos[0], qPos[1], 1.0};\n+111 y = f(localPos);\n+112 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_\n+[5];\n+113 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+114 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+115 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+116 }\n+117\n+118 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(3),\n+qOrder);\n+119 for (auto&& qp : rule2)\n+120 {\n+121 FieldVector qPos = qp.position();\n+122\n+123 auto y = f(qPos);\n+124 out[24] += y[0]*qp.weight();\n+125 out[25] += y[1]*qp.weight();\n+126 out[26] += y[2]*qp.weight();\n+127 out[27] += y[0]*qPos[1]*qp.weight();\n+128 out[28] += y[0]*qPos[2]*qp.weight();\n+129 out[29] += y[1]*qPos[0]*qp.weight();\n+130 out[30] += y[1]*qPos[2]*qp.weight();\n+131 out[31] += y[2]*qPos[0]*qp.weight();\n+132 out[32] += y[2]*qPos[1]*qp.weight();\n+133 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();\n+134 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();\n+135 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();\n+136 }\n+137 }\n+138\n+139 private:\n+140 // Facet orientations\n+141 std::array sign_;\n+142\n+143 // Facet normals\n+144 std::array n_;\n+145 };\n+146}\n+147#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:_\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: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_\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: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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\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:25\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 &ff, 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:25\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas1cube3dlocalinterpolation.hh:56\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:34\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/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: p0localbasis.hh File Reference\n+dune-localfunctions: raviartthomascube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,68 @@\n \n \n \n \n \n \n \n
    \n \n-
    p0localbasis.hh File Reference
    \n+
    raviartthomascube.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.hh>
    \n+\n+

    Convenience header that includes all available Raviart-Thomas local finite elements for cubes. \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+\n+\n+\n+\n+\n+\n \n

    \n Classes

    class  Dune::P0LocalBasis< D, R, d >
     Constant shape function. More...
    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...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n-
    \n+

    Detailed Description

    \n+

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

    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,56 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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 _\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_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\bd_\b _\b>\n-\u00a0 Constant shape function. _\bM_\bo_\br_\be_\b._\b._\b.\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 \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/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: p0localbasis.hh Source File\n+dune-localfunctions: raviartthomascube.hh Source File\n \n \n \n \n \n \n \n@@ -70,109 +70,213 @@\n \n \n \n \n \n \n \n
    \n-
    p0localbasis.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
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_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-
    28 template<class D, class R, int d>
    \n-
    \n-\n-
    30 {
    \n-
    31 public:
    \n-
    33 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n-
    34 Dune::FieldMatrix<R,1,d> > Traits;
    \n-
    35
    \n-
    \n-
    37 unsigned int size () const
    \n-
    38 {
    \n-
    39 return 1;
    \n-
    40 }
    \n-
    \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-
    \n-
    43 inline void evaluateFunction (const typename Traits::DomainType&,
    \n-
    44 std::vector<typename Traits::RangeType>& out) const
    \n-
    45 {
    \n-
    46 out.resize(1);
    \n-
    47 out[0] = 1;
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    51 inline void
    \n-
    \n-
    52 evaluateJacobian (const typename Traits::DomainType&, // position
    \n-
    53 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    54 {
    \n-
    55 out.resize(1);
    \n-
    56 for (int i=0; i<d; i++)
    \n-
    57 out[0][0][i] = 0;
    \n-
    58 }
    \n-
    \n-
    59
    \n-
    \n-
    65 void partial(const std::array<unsigned int,d>& order,
    \n-
    66 const typename Traits::DomainType& in,
    \n-
    67 std::vector<typename Traits::RangeType>& out) const
    \n-
    68 {
    \n-
    69 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    70 if (totalOrder == 0) {
    \n-
    71 evaluateFunction(in, out);
    \n-
    72 } else {
    \n-
    73 out.resize(1);
    \n-
    74 out[0] = 0;
    \n-
    75 }
    \n-
    76 }
    \n-
    \n-
    77
    \n-
    \n-
    79 unsigned int order () const
    \n-
    80 {
    \n-
    81 return 0;
    \n-
    82 }
    \n-
    \n-
    83 };
    \n-
    \n-
    84
    \n-
    85}
    \n-
    86
    \n-
    87#endif
    \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+
    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+
    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+
    155
    \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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Constant shape function.
    Definition p0localbasis.hh:30
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition p0localbasis.hh:79
    \n-
    void evaluateJacobian(const typename Traits::DomainType &, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition p0localbasis.hh:52
    \n-
    void evaluateFunction(const typename Traits::DomainType &, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition p0localbasis.hh:43
    \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:65
    \n-
    unsigned int size() const
    number of shape functions
    Definition p0localbasis.hh:37
    \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:34
    \n-\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,120 +1,221 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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_\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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_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-28 template\n-_\b2_\b9 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-30 {\n-31 public:\n-33 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_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n-35\n-_\b3_\b7 unsigned int _\bs_\bi_\bz_\be () const\n-38 {\n-39 return 1;\n-40 }\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-_\b4_\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&,\n-44 std::vector& out) const\n-45 {\n-46 out.resize(1);\n-47 out[0] = 1;\n-48 }\n-49\n-51 inline void\n-_\b5_\b2 _\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-53 std::vector& out) const // return value\n-54 {\n-55 out.resize(1);\n-56 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n-66 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 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-70 if (totalOrder == 0) {\n-71 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-72 } else {\n-73 out.resize(1);\n-74 out[0] = 0;\n-75 }\n-76 }\n-77\n-_\b7_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-80 {\n-81 return 0;\n-82 }\n-83 };\n-84\n-85}\n-86\n-87#endif\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+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_\b0_\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+_\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_\b4_\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 _\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:34\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:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Constant shape function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:30\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:79\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:52\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:43\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:65\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:37\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:34\n-_\bl_\bo_\bc_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\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/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: p0localcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas1cube2dlocalinterpolation.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-
    p0localcoefficients.hh File Reference
    \n+
    raviartthomas1cube2dlocalinterpolation.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/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::P0LocalCoefficients
     Layout map for P0 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,24 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-p0localcoefficients.hh File Reference\n-#include \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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for P0 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/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: p0localcoefficients.hh Source File\n+dune-localfunctions: raviartthomas1cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,74 +70,127 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    p0localcoefficients.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 (C) 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+
    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 <iostream>
    \n-
    10#include <vector>
    \n-
    11
    \n-\n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+\n+
    12
    \n
    13
    \n
    14namespace Dune
    \n
    15{
    \n
    16
    \n-
    \n-\n-
    24 {
    \n-
    25 public:
    \n-
    \n-
    27 P0LocalCoefficients () : index(0,0,0)
    \n-
    28 {}
    \n-
    \n-
    29
    \n-
    \n-
    31 std::size_t size () const
    \n-
    32 {
    \n-
    33 return 1;
    \n-
    34 }
    \n-
    \n-
    35
    \n-
    \n-
    37 const LocalKey& localKey ([[maybe_unused]] std::size_t i) const
    \n-
    38 {
    \n-
    39 return index;
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    42 private:
    \n-
    43 LocalKey index;
    \n-
    44 };
    \n+
    25 template<class LB>
    \n+
    \n+\n+
    27 {
    \n+
    28
    \n+
    29 public:
    \n+
    \n+
    35 RT1Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    36 {
    \n+
    37 for (size_t i=0; i<4; i++)
    \n+
    38 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    39
    \n+
    40 n_[0] = {-1.0, 0.0};
    \n+
    41 n_[1] = { 1.0, 0.0};
    \n+
    42 n_[2] = { 0.0, -1.0};
    \n+
    43 n_[3] = { 0.0, 1.0};
    \n+
    44 }
    \n
    \n
    45
    \n-
    46}
    \n-
    47#endif
    \n-\n+
    54 template<class F, class C>
    \n+
    \n+
    55 void interpolate (const F& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    62
    \n+
    63 out.resize(12);
    \n+
    64 fill(out.begin(), out.end(), 0.0);
    \n+
    65
    \n+
    66 const int qOrder = 3;
    \n+
    67 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    68
    \n+
    69 for (auto&& qp : rule1)
    \n+
    70 {
    \n+
    71 Scalar qPos = qp.position();
    \n+
    72 typename LB::Traits::DomainType localPos = {0.0, qPos};
    \n+
    73
    \n+
    74 auto y = f(localPos);
    \n+
    75 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n+
    76 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    77
    \n+
    78 localPos = {1.0, qPos};
    \n+
    79 y = f(localPos);
    \n+
    80 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n+
    81 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    82
    \n+
    83 localPos = {qPos, 0.0};
    \n+
    84 y = f(localPos);
    \n+
    85 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n+
    86 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    87
    \n+
    88 localPos = {qPos, 1.0};
    \n+
    89 y = f(localPos);
    \n+
    90 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n+
    91 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    92 }
    \n+
    93
    \n+
    94 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    95
    \n+
    96 for (auto&& qp : rule2)
    \n+
    97 {
    \n+
    98 auto qPos = qp.position();
    \n+
    99
    \n+
    100 auto y = f(qPos);
    \n+
    101 out[8] += y[0]*qp.weight();
    \n+
    102 out[9] += y[1]*qp.weight();
    \n+
    103 out[10] += y[0]*qPos[1]*qp.weight();
    \n+
    104 out[11] += y[1]*qPos[0]*qp.weight();
    \n+
    105 }
    \n+
    106 }
    \n+
    \n+
    107
    \n+
    108 private:
    \n+
    109 // Edge orientations
    \n+
    110 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n+
    111
    \n+
    112 // Edge normals
    \n+
    113 std::array<typename LB::Traits::DomainType, 4> n_;
    \n+
    114 };
    \n+
    \n+
    115}
    \n+
    116#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Layout map for P0 elements.
    Definition p0localcoefficients.hh:24
    \n-
    P0LocalCoefficients()
    Standard constructor.
    Definition p0localcoefficients.hh:27
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition p0localcoefficients.hh:37
    \n-
    std::size_t size() const
    number of coefficients
    Definition p0localcoefficients.hh:31
    \n+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalinterpolation.hh:27
    \n+
    RT1Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2dlocalinterpolation.hh:35
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube2dlocalinterpolation.hh:55
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,72 +1,125 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+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#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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+12\n 13\n 14namespace _\bD_\bu_\bn_\be\n 15{\n 16\n-_\b2_\b3 class _\bP_\b0_\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 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : index(0,0,0)\n-28 {}\n-29\n-_\b3_\b1 std::size_t _\bs_\bi_\bz_\be () const\n-32 {\n-33 return 1;\n-34 }\n-35\n-_\b3_\b7 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-38 {\n-39 return index;\n-40 }\n-41\n-42 private:\n-43 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by index;\n-44 };\n+25 template\n+_\b2_\b6 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+27 {\n+28\n+29 public:\n+_\b3_\b5 _\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+36 {\n+37 for (size_t i=0; i<4; i++)\n+38 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+39\n+40 n_[0] = {-1.0, 0.0};\n+41 n_[1] = { 1.0, 0.0};\n+42 n_[2] = { 0.0, -1.0};\n+43 n_[3] = { 0.0, 1.0};\n+44 }\n 45\n-46}\n-47#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+54 template\n+_\b5_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+62\n+63 out.resize(12);\n+64 fill(out.begin(), out.end(), 0.0);\n+65\n+66 const int qOrder = 3;\n+67 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n+qOrder);\n+68\n+69 for (auto&& qp : rule1)\n+70 {\n+71 Scalar qPos = qp.position();\n+72 typename LB::Traits::DomainType localPos = {0.0, qPos};\n+73\n+74 auto y = f(localPos);\n+75 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n+76 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n+77\n+78 localPos = {1.0, qPos};\n+79 y = f(localPos);\n+80 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n+81 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n+82\n+83 localPos = {qPos, 0.0};\n+84 y = f(localPos);\n+85 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n+86 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n+87\n+88 localPos = {qPos, 1.0};\n+89 y = f(localPos);\n+90 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n+91 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n+92 }\n+93\n+94 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n+qOrder);\n+95\n+96 for (auto&& qp : rule2)\n+97 {\n+98 auto qPos = qp.position();\n+99\n+100 auto y = f(qPos);\n+101 out[8] += y[0]*qp.weight();\n+102 out[9] += y[1]*qp.weight();\n+103 out[10] += y[0]*qPos[1]*qp.weight();\n+104 out[11] += y[1]*qPos[0]*qp.weight();\n+105 }\n+106 }\n+107\n+108 private:\n+109 // Edge orientations\n+110 std::array sign_;\n+111\n+112 // Edge normals\n+113 std::array n_;\n+114 };\n+115}\n+116#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:23\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-Layout map for P0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.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_\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:27\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:37\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:31\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:27\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:35\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 &ff, 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:55\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/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: pk.hh File Reference\n+dune-localfunctions: raviartthomas1cube2dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,40 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    pk.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    raviartthomas1cube2dlocalcoefficients.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/lagrange/lagrangesimplex.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+Classes

    class  Dune::RT1Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on quadrilaterals. More...
     
    \n \n \n \n-

    \n Namespaces

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

    \n-Typedefs

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

    class  Dune::MimeticLocalFiniteElement< D, R, dim >
    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,20 +1,25 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+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-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:_\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/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: mimetic.hh Source File\n+dune-localfunctions: raviartthomas0prismlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,112 +70,146 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    mimetic.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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n-
    9
    \n-\n-
    11#include "mimetic/mimeticall.hh"
    \n+
    8#include <numeric>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.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+
    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-\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+
    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-
    45
    \n+
    44
    \n
    \n-
    46 const typename Traits::LocalBasisType& localBasis () const
    \n+
    46 unsigned int size () const
    \n
    47 {
    \n-
    48 return basis;
    \n+
    48 return 5;
    \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+
    \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-
    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+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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,122 +1,157 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_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+8#include \n+9#include \n+10\n+11#include \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+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 _\bD_\bu_\bn_\be_\b:_\b:_\bL_\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+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 basis;\n+48 return 5;\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+_\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:_\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_\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:34\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:42\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/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: raviartthomas3cube2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas0prismlocalinterpolation.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-
    raviartthomas3cube2dlocalbasis.hh File Reference
    \n+
    raviartthomas0prismlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <bitset>
    \n-#include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+
    #include <vector>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

    \n \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::RT0PrismLocalInterpolation< LB >
     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,26 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas3cube2dlocalbasis.hh File Reference\n-#include \n-#include \n+raviartthomas0prismlocalinterpolation.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_\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_\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_\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:_\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/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: raviartthomas3cube2dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas0prismlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,659 +70,102 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas3cube2dlocalbasis.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <bitset>
    \n-
    9#include <numeric>
    \n-
    10#include <vector>
    \n+
    8#include <vector>
    \n+
    9
    \n+\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+
    12namespace Dune
    \n+
    13{
    \n+
    22 template<class LB>
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    27
    \n+
    \n+
    33 RT0PrismLocalInterpolation (std::bitset<5> s = 0)
    \n+
    34 {
    \n+
    35 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    36
    \n+
    37 for (size_t i=0; i<5; i++)
    \n+
    38 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    39
    \n+
    40 Scalar r = 1/std::sqrt(2);
    \n+
    41
    \n+
    42 n[0] = { 0.0, -1.0, 0.0};
    \n+
    43 n[1] = {-1.0, 0.0, 0.0};
    \n+
    44 n[2] = { r, r, 0.0};
    \n+
    45 n[3] = { 0.0, 0.0, -1.0};
    \n+
    46 n[4] = { 0.0, 0.0, 1.0};
    \n
    47
    \n-
    \n-
    49 unsigned int size () const
    \n-
    50 {
    \n-
    51 return 40;
    \n-
    52 }
    \n-
    \n+
    48 c[0] = 1.0;
    \n+
    49 c[1] = 1.0;
    \n+
    50 c[2] = std::sqrt(2);
    \n+
    51 c[3] = 1/2.0;
    \n+
    52 c[4] = 1/2.0;
    \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[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+
    54 m[0] = { 0.5, 0.0, 0.5};
    \n+
    55 m[1] = { 0.0, 0.5, 0.5};
    \n+
    56 m[2] = { 0.5, 0.5, 0.5};
    \n+
    57 m[3] = { 1/3.0, 1/3.0, 0.0};
    \n+
    58 m[4] = { 1/3.0, 1/3.0, 1.0};
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    69 template<class F, class C>
    \n+
    \n+
    70 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    71 {
    \n+
    72 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    73
    \n+
    74 out.resize(5);
    \n+
    75 for(int i=0; i<5; i++)
    \n+
    76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    79 private:
    \n+
    80 // Facet orientations
    \n+
    81 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n+
    82 // Facet area
    \n+
    83 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n+
    84
    \n+
    85 // Facet normals
    \n+
    86 std::array<typename LB::Traits::DomainType, 5> n;
    \n+
    87 // Facet midpoints
    \n+
    88 std::array<typename LB::Traits::DomainType, 5> m;
    \n+
    89 };
    \n
    \n-
    640}
    \n-
    641
    \n-
    642#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n+
    90}
    \n+
    91#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalinterpolation.hh:24
    \n+
    RT0PrismLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prismlocalinterpolation.hh:33
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0prismlocalinterpolation.hh:70
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,671 +1,98 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+12namespace _\bD_\bu_\bn_\be\n+13{\n+22 template\n+_\b2_\b3 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+24 {\n+25\n+26 public:\n+27\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 (std::bitset<5> s = 0)\n+34 {\n+35 typedef typename LB::Traits::RangeFieldType Scalar;\n+36\n+37 for (size_t i=0; i<5; i++)\n+38 sign[i] = (s[i]) ? -1.0 : 1.0;\n+39\n+40 Scalar r = 1/std::sqrt(2);\n+41\n+42 n[0] = { 0.0, -1.0, 0.0};\n+43 n[1] = {-1.0, 0.0, 0.0};\n+44 n[2] = { r, r, 0.0};\n+45 n[3] = { 0.0, 0.0, -1.0};\n+46 n[4] = { 0.0, 0.0, 1.0};\n 47\n-_\b4_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-50 {\n-51 return 40;\n-52 }\n+48 c[0] = 1.0;\n+49 c[1] = 1.0;\n+50 c[2] = std::sqrt(2);\n+51 c[3] = 1/2.0;\n+52 c[4] = 1/2.0;\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[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+54 m[0] = { 0.5, 0.0, 0.5};\n+55 m[1] = { 0.0, 0.5, 0.5};\n+56 m[2] = { 0.5, 0.5, 0.5};\n+57 m[3] = { 1/3.0, 1/3.0, 0.0};\n+58 m[4] = { 1/3.0, 1/3.0, 1.0};\n+59 }\n+60\n+69 template\n+_\b7_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+71 {\n+72 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+73\n+74 out.resize(5);\n+75 for(int i=0; i<5; i++)\n+76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n+77 }\n+78\n+79 private:\n+80 // Facet orientations\n+81 std::array sign;\n+82 // Facet area\n+83 std::array c;\n+84\n+85 // Facet normals\n+86 std::array n;\n+87 // Facet midpoints\n+88 std::array m;\n+89 };\n+90}\n+91#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\n-Type traits for LocalBasisVirtualInterface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn common/localbasis.hh:34\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:42\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:_\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: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_\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:33\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 &ff, 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:70\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/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: raviartthomas3cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas0prismlocalcoefficients.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-
    raviartthomas3cube2dlocalcoefficients.hh File Reference
    \n+
    raviartthomas0prismlocalcoefficients.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::RT3Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-3 elements on quadrilaterals. More...
    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,23 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas3cube2dlocalcoefficients.hh File Reference\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-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:_\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/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: raviartthomas3cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas0prismlocalcoefficients.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+
    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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_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-
    \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+
    15
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 for(int 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_PRISM_LOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    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,83 +1,73 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+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 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+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(int 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 _\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: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\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+_\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 raviartthomas3cube2dlocalcoefficients.hh:50\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/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: raviartthomas3cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas0pyramidlocalinterpolation.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-
    raviartthomas3cube2dlocalinterpolation.hh File Reference
    \n+
    raviartthomas0pyramidlocalinterpolation.hh File Reference
    \n
    \n
    \n
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n #include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::RT3Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference quadrilateral. 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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas3cube2dlocalinterpolation.hh File Reference\n+raviartthomas0pyramidlocalinterpolation.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_\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_\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+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 ===============================================================================\n 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: raviartthomas3cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas0pyramidlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,166 +70,101 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas3cube2dlocalinterpolation.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n
    7
    \n
    8#include <vector>
    \n
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    24 template<class LB>
    \n-
    \n-\n-
    26 {
    \n+\n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    22 template<class LB>
    \n+
    \n+\n+
    24 {
    \n+
    25
    \n+
    26 public:
    \n
    27
    \n-
    28 public:
    \n-
    29
    \n-
    \n-
    35 RT3Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    36 {
    \n-
    37 for (size_t i=0; i<4; i++)
    \n-
    38 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    \n+
    33 RT0PyramidLocalInterpolation (std::bitset<5> s = 0)
    \n+
    34 {
    \n+
    35 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    36
    \n+
    37 for (size_t i=0; i<5; i++)
    \n+
    38 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n
    39
    \n-
    40 n_[0] = {-1.0, 0.0};
    \n-
    41 n_[1] = { 1.0, 0.0};
    \n-
    42 n_[2] = { 0.0, -1.0};
    \n-
    43 n_[3] = { 0.0, 1.0};
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    54 template<typename F, typename C>
    \n-
    \n-
    55 void interpolate (const F& ff, 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+
    40 Scalar r = 1/std::sqrt(2);
    \n+
    41
    \n+
    42 n[0] = { 0.0, 0.0, -1.0};
    \n+
    43 n[1] = {-1.0, 0.0, 0.0};
    \n+
    44 n[2] = { r, 0.0, r};
    \n+
    45 n[3] = { 0.0, -1.0, 0.0};
    \n+
    46 n[4] = { 0.0, r, r};
    \n+
    47
    \n+
    48 c[0] = 1.0;
    \n+
    49 c[1] = 1/2.0;
    \n+
    50 c[2] = 1/2.0 * std::sqrt(2);
    \n+
    51 c[3] = 1/2.0;
    \n+
    52 c[4] = 1/2.0 * std::sqrt(2);
    \n+
    53
    \n+
    54 m[0] = { 0.5, 0.5, 0.0};
    \n+
    55 m[1] = { 0.0, 1/3.0, 1/3.0};
    \n+
    56 m[2] = { 2/3.0, 1/3.0, 1/3.0};
    \n+
    57 m[3] = { 1/3.0, 0.0, 1/3.0};
    \n+
    58 m[4] = { 1/3.0, 2/3.0, 1/3.0};
    \n+
    59 }
    \n+
    \n
    60
    \n-
    61 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    62
    \n-
    63 out.resize(40);
    \n-
    64 fill(out.begin(), out.end(), 0.0);
    \n-
    65
    \n-
    66 const int qOrder = 9;
    \n-
    67 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    68
    \n-
    69 for (auto&& qp : rule1)
    \n-
    70 {
    \n-
    71 Scalar qPos = qp.position();
    \n-
    72 typename LB::Traits::DomainType localPos;
    \n+
    69 template<class F, class C>
    \n+
    \n+
    70 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    71 {
    \n+
    72 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n
    73
    \n-
    74 localPos = {0.0, qPos};
    \n-
    75 auto y = f(localPos);
    \n-
    76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n-
    77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    78 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-
    79 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-
    80
    \n-
    81 localPos = {1.0, qPos};
    \n-
    82 y = f(localPos);
    \n-
    83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n-
    84 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    85 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-
    86 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-
    87
    \n-
    88 localPos = {qPos, 0.0};
    \n-
    89 y = f(localPos);
    \n-
    90 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n-
    91 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    92 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-
    93 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-
    94
    \n-
    95 localPos = {qPos, 1.0};
    \n-
    96 y = f(localPos);
    \n-
    97 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n-
    98 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    99 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-
    100 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-
    101 }
    \n-
    102
    \n-
    103 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    104
    \n-
    105 for (auto&& qp : rule2)
    \n-
    106 {
    \n-
    107 auto qPos = qp.position();
    \n-
    108
    \n-
    109 auto y = f(qPos);
    \n-
    110 double l0_x=1.0;
    \n-
    111 double l1_x=2.0*qPos[0]-1.0;
    \n-
    112 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n-
    113 double l3_x=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n-
    114 double l0_y=1.0;
    \n-
    115 double l1_y=2.0*qPos[1]-1.0;
    \n-
    116 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n-
    117 double l3_y=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n-
    118
    \n-
    119 out[16] += y[0]*l0_x*l0_y*qp.weight();
    \n-
    120 out[17] += y[0]*l0_x*l1_y*qp.weight();
    \n-
    121 out[18] += y[0]*l0_x*l2_y*qp.weight();
    \n-
    122 out[19] += y[0]*l0_x*l3_y*qp.weight();
    \n-
    123 out[20] += y[0]*l1_x*l0_y*qp.weight();
    \n-
    124 out[21] += y[0]*l1_x*l1_y*qp.weight();
    \n-
    125 out[22] += y[0]*l1_x*l2_y*qp.weight();
    \n-
    126 out[23] += y[0]*l1_x*l3_y*qp.weight();
    \n-
    127 out[24] += y[0]*l2_x*l0_y*qp.weight();
    \n-
    128 out[25] += y[0]*l2_x*l1_y*qp.weight();
    \n-
    129 out[26] += y[0]*l2_x*l2_y*qp.weight();
    \n-
    130 out[27] += y[0]*l2_x*l3_y*qp.weight();
    \n-
    131
    \n-
    132 out[28] += y[1]*l0_x*l0_y*qp.weight();
    \n-
    133 out[29] += y[1]*l0_x*l1_y*qp.weight();
    \n-
    134 out[30] += y[1]*l0_x*l2_y*qp.weight();
    \n-
    135 out[31] += y[1]*l1_x*l0_y*qp.weight();
    \n-
    136 out[32] += y[1]*l1_x*l1_y*qp.weight();
    \n-
    137 out[33] += y[1]*l1_x*l2_y*qp.weight();
    \n-
    138 out[34] += y[1]*l2_x*l0_y*qp.weight();
    \n-
    139 out[35] += y[1]*l2_x*l1_y*qp.weight();
    \n-
    140 out[36] += y[1]*l2_x*l2_y*qp.weight();
    \n-
    141 out[37] += y[1]*l3_x*l0_y*qp.weight();
    \n-
    142 out[38] += y[1]*l3_x*l1_y*qp.weight();
    \n-
    143 out[39] += y[1]*l3_x*l2_y*qp.weight();
    \n-
    144 }
    \n-
    145 }
    \n-
    \n-
    146
    \n-
    147 private:
    \n-
    148 // Edge orientations
    \n-
    149 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n-
    150
    \n-
    151 // Edge normals
    \n-
    152 std::array<typename LB::Traits::DomainType, 4> n_;
    \n-
    153 };
    \n-
    \n-
    154}
    \n-
    155
    \n-
    156#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    74 out.resize(5);
    \n+
    75 for(int i=0; i<5; i++)
    \n+
    76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    79 private:
    \n+
    80 // Facet orientations
    \n+
    81 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n+
    82 // Facet area
    \n+
    83 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n+
    84
    \n+
    85 // Facet normals
    \n+
    86 std::array<typename LB::Traits::DomainType, 5> n;
    \n+
    87 // Facet midpoints
    \n+
    88 std::array<typename LB::Traits::DomainType, 5> m;
    \n+
    89 };
    \n+
    \n+
    90}
    \n+
    91#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalinterpolation.hh:26
    \n-
    RT3Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2dlocalinterpolation.hh:35
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas3cube2dlocalinterpolation.hh:55
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0pyramidlocalinterpolation.hh:24
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0pyramidlocalinterpolation.hh:70
    \n+
    RT0PyramidLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramidlocalinterpolation.hh:33
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,175 +1,98 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-24 template\n-_\b2_\b5 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-26 {\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+22 template\n+_\b2_\b3 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+24 {\n+25\n+26 public:\n 27\n-28 public:\n-29\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 (std::bitset<4> s = 0)\n-36 {\n-37 for (size_t i=0; i<4; i++)\n-38 sign_[i] = (s[i]) ? -1.0 : 1.0;\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 (std::bitset<5> s = 0)\n+34 {\n+35 typedef typename LB::Traits::RangeFieldType Scalar;\n+36\n+37 for (size_t i=0; i<5; i++)\n+38 sign[i] = (s[i]) ? -1.0 : 1.0;\n 39\n-40 n_[0] = {-1.0, 0.0};\n-41 n_[1] = { 1.0, 0.0};\n-42 n_[2] = { 0.0, -1.0};\n-43 n_[3] = { 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& ff, 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+40 Scalar r = 1/std::sqrt(2);\n+41\n+42 n[0] = { 0.0, 0.0, -1.0};\n+43 n[1] = {-1.0, 0.0, 0.0};\n+44 n[2] = { r, 0.0, r};\n+45 n[3] = { 0.0, -1.0, 0.0};\n+46 n[4] = { 0.0, r, r};\n+47\n+48 c[0] = 1.0;\n+49 c[1] = 1/2.0;\n+50 c[2] = 1/2.0 * std::sqrt(2);\n+51 c[3] = 1/2.0;\n+52 c[4] = 1/2.0 * std::sqrt(2);\n+53\n+54 m[0] = { 0.5, 0.5, 0.0};\n+55 m[1] = { 0.0, 1/3.0, 1/3.0};\n+56 m[2] = { 2/3.0, 1/3.0, 1/3.0};\n+57 m[3] = { 1/3.0, 0.0, 1/3.0};\n+58 m[4] = { 1/3.0, 2/3.0, 1/3.0};\n+59 }\n 60\n-61 auto&& f = Impl::makeFunctionWithCallOperator\n+_\b7_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+71 {\n+72 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-62\n-63 out.resize(40);\n-64 fill(out.begin(), out.end(), 0.0);\n-65\n-66 const int qOrder = 9;\n-67 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n-qOrder);\n-68\n-69 for (auto&& qp : rule1)\n-70 {\n-71 Scalar qPos = qp.position();\n-72 typename LB::Traits::DomainType localPos;\n 73\n-74 localPos = {0.0, qPos};\n-75 auto y = f(localPos);\n-76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n-77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n-78 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-79 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-80\n-81 localPos = {1.0, qPos};\n-82 y = f(localPos);\n-83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n-84 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n-85 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-86 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-87\n-88 localPos = {qPos, 0.0};\n-89 y = f(localPos);\n-90 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n-91 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n-92 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-93 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-94\n-95 localPos = {qPos, 1.0};\n-96 y = f(localPos);\n-97 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n-98 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n-99 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-100 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-101 }\n-102\n-103 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n-qOrder);\n-104\n-105 for (auto&& qp : rule2)\n-106 {\n-107 auto qPos = qp.position();\n-108\n-109 auto y = f(qPos);\n-110 double l0_x=1.0;\n-111 double l1_x=2.0*qPos[0]-1.0;\n-112 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n-113 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-114 double l0_y=1.0;\n-115 double l1_y=2.0*qPos[1]-1.0;\n-116 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n-117 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-118\n-119 out[16] += y[0]*l0_x*l0_y*qp.weight();\n-120 out[17] += y[0]*l0_x*l1_y*qp.weight();\n-121 out[18] += y[0]*l0_x*l2_y*qp.weight();\n-122 out[19] += y[0]*l0_x*l3_y*qp.weight();\n-123 out[20] += y[0]*l1_x*l0_y*qp.weight();\n-124 out[21] += y[0]*l1_x*l1_y*qp.weight();\n-125 out[22] += y[0]*l1_x*l2_y*qp.weight();\n-126 out[23] += y[0]*l1_x*l3_y*qp.weight();\n-127 out[24] += y[0]*l2_x*l0_y*qp.weight();\n-128 out[25] += y[0]*l2_x*l1_y*qp.weight();\n-129 out[26] += y[0]*l2_x*l2_y*qp.weight();\n-130 out[27] += y[0]*l2_x*l3_y*qp.weight();\n-131\n-132 out[28] += y[1]*l0_x*l0_y*qp.weight();\n-133 out[29] += y[1]*l0_x*l1_y*qp.weight();\n-134 out[30] += y[1]*l0_x*l2_y*qp.weight();\n-135 out[31] += y[1]*l1_x*l0_y*qp.weight();\n-136 out[32] += y[1]*l1_x*l1_y*qp.weight();\n-137 out[33] += y[1]*l1_x*l2_y*qp.weight();\n-138 out[34] += y[1]*l2_x*l0_y*qp.weight();\n-139 out[35] += y[1]*l2_x*l1_y*qp.weight();\n-140 out[36] += y[1]*l2_x*l2_y*qp.weight();\n-141 out[37] += y[1]*l3_x*l0_y*qp.weight();\n-142 out[38] += y[1]*l3_x*l1_y*qp.weight();\n-143 out[39] += y[1]*l3_x*l2_y*qp.weight();\n-144 }\n-145 }\n-146\n-147 private:\n-148 // Edge orientations\n-149 std::array sign_;\n-150\n-151 // Edge normals\n-152 std::array n_;\n-153 };\n-154}\n-155\n-156#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n+74 out.resize(5);\n+75 for(int i=0; i<5; i++)\n+76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n+77 }\n+78\n+79 private:\n+80 // Facet orientations\n+81 std::array sign;\n+82 // Facet area\n+83 std::array c;\n+84\n+85 // Facet normals\n+86 std::array n;\n+87 // Facet midpoints\n+88 std::array m;\n+89 };\n+90}\n+91#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:_\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:26\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:35\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+_\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: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_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n void interpolate(const F &ff, 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:55\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalinterpolation.hh:70\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:33\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/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: raviartthomas02d.hh File Reference\n+dune-localfunctions: raviartthomas0pyramidlocalcoefficients.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-
    raviartthomas02d.hh File Reference
    \n+
    raviartthomas0pyramidlocalcoefficients.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 <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::RT02DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on triangles. More...
    class  Dune::RT0PyramidLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on pyramids. 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.9.0\n Loading...\n Searching...\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-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+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_\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:_\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 ===============================================================================\n 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: raviartthomas02d.hh Source File\n+dune-localfunctions: raviartthomas0pyramidlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,125 +70,75 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas02d.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 (C) 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_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_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+
    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(int i=0; i< size(); i++)
    \n+
    31 li[i] = LocalKey(i,1,0);
    \n+
    32 }
    \n+
    \n
    33
    \n
    \n-\n-
    36 {}
    \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-
    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+
    49}
    \n+
    50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_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-
    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-
    Lowest order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas02dlocalbasis.hh:26
    \n-
    Layout map for RT0 elements.
    Definition raviartthomas02dlocalcoefficients.hh:24
    \n-
    Definition raviartthomas02dlocalinterpolation.hh:18
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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,136 +1,73 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALCOEFFICIENTS_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_\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+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_\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 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+30 for(int 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 _\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+_\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_\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:_\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:23\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 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-Lowest order Raviart-Thomas shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:26\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-Layout map for RT0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:24\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:18\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/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: raviartthomas0pyramidlocalbasis.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-
    raviartthomas0prismlocalcoefficients.hh File Reference
    \n+
    raviartthomas0pyramidlocalbasis.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::RT0PrismLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on prisms. 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,23 +1,25 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas0prismlocalcoefficients.hh File Reference\n-#include \n+raviartthomas0pyramidlocalbasis.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:_\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:_\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/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: raviartthomas0pyramidlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,75 +70,148 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0prismlocalcoefficients.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 (C) 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_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_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(int i=0; i< size(); i++)
    \n-
    31 li[i] = LocalKey(i,1,0);
    \n-
    32 }
    \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-
    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+
    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+
    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 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-
    49}
    \n-
    50#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALCOEFFICIENTS_HH
    \n+
    130}
    \n+
    131#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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,73 +1,159 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMAS0_PYRAMID_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_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 _\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(int 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+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_\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_\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+_\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\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 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_\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:23\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:_\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:34\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:42\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 ===============================================================================\n 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: raviartthomas1cube2d.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-
    raviartthomas0prismlocalinterpolation.hh File Reference
    \n+
    raviartthomas1cube2d.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \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::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,23 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 _\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- _\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/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: raviartthomas1cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,102 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0prismlocalinterpolation.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 (C) 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_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-\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 RT0PrismLocalInterpolation (std::bitset<5> s = 0)
    \n-
    34 {
    \n-
    35 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    36
    \n-
    37 for (size_t i=0; i<5; i++)
    \n-
    38 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    39
    \n-
    40 Scalar r = 1/std::sqrt(2);
    \n-
    41
    \n-
    42 n[0] = { 0.0, -1.0, 0.0};
    \n-
    43 n[1] = {-1.0, 0.0, 0.0};
    \n-
    44 n[2] = { r, r, 0.0};
    \n-
    45 n[3] = { 0.0, 0.0, -1.0};
    \n-
    46 n[4] = { 0.0, 0.0, 1.0};
    \n-
    47
    \n-
    48 c[0] = 1.0;
    \n-
    49 c[1] = 1.0;
    \n-
    50 c[2] = std::sqrt(2);
    \n-
    51 c[3] = 1/2.0;
    \n-
    52 c[4] = 1/2.0;
    \n-
    53
    \n-
    54 m[0] = { 0.5, 0.0, 0.5};
    \n-
    55 m[1] = { 0.0, 0.5, 0.5};
    \n-
    56 m[2] = { 0.5, 0.5, 0.5};
    \n-
    57 m[3] = { 1/3.0, 1/3.0, 0.0};
    \n-
    58 m[4] = { 1/3.0, 1/3.0, 1.0};
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    69 template<class F, class C>
    \n-
    \n-
    70 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    71 {
    \n-
    72 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    73
    \n-
    74 out.resize(5);
    \n-
    75 for(int i=0; i<5; i++)
    \n-
    76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79 private:
    \n-
    80 // Facet orientations
    \n-
    81 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n-
    82 // Facet area
    \n-
    83 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n-
    84
    \n-
    85 // Facet normals
    \n-
    86 std::array<typename LB::Traits::DomainType, 5> n;
    \n-
    87 // Facet midpoints
    \n-
    88 std::array<typename LB::Traits::DomainType, 5> m;
    \n-
    89 };
    \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+
    35
    \n+\n-
    90}
    \n-
    91#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_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::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-
    First order Raviart-Thomas shape functions on the reference prism.
    Definition raviartthomas0prismlocalinterpolation.hh:24
    \n-
    RT0PrismLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0prismlocalinterpolation.hh:33
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0prismlocalinterpolation.hh:70
    \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+
    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:27
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,98 +1,137 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALFINITEELEMENT_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-22 template\n-_\b2_\b3 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-24 {\n-25\n-26 public:\n-27\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 (std::bitset<5> s = 0)\n-34 {\n-35 typedef typename LB::Traits::RangeFieldType Scalar;\n-36\n-37 for (size_t i=0; i<5; i++)\n-38 sign[i] = (s[i]) ? -1.0 : 1.0;\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+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 39\n-40 Scalar r = 1/std::sqrt(2);\n-41\n-42 n[0] = { 0.0, -1.0, 0.0};\n-43 n[1] = {-1.0, 0.0, 0.0};\n-44 n[2] = { r, r, 0.0};\n-45 n[3] = { 0.0, 0.0, -1.0};\n-46 n[4] = { 0.0, 0.0, 1.0};\n-47\n-48 c[0] = 1.0;\n-49 c[1] = 1.0;\n-50 c[2] = std::sqrt(2);\n-51 c[3] = 1/2.0;\n-52 c[4] = 1/2.0;\n-53\n-54 m[0] = { 0.5, 0.0, 0.5};\n-55 m[1] = { 0.0, 0.5, 0.5};\n-56 m[2] = { 0.5, 0.5, 0.5};\n-57 m[3] = { 1/3.0, 1/3.0, 0.0};\n-58 m[4] = { 1/3.0, 1/3.0, 1.0};\n-59 }\n-60\n-69 template\n-_\b7_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-71 {\n-72 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-73\n-74 out.resize(5);\n-75 for(int i=0; i<5; i++)\n-76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n-77 }\n-78\n-79 private:\n-80 // Facet orientations\n-81 std::array sign;\n-82 // Facet area\n-83 std::array c;\n-84\n-85 // Facet normals\n-86 std::array n;\n-87 // Facet midpoints\n-88 std::array m;\n-89 };\n-90}\n-91#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALINTERPOLATION_HH\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_\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+_\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 _\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: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_\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:33\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 &ff, 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:70\n-_\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_\b:_\b:_\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: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/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: raviartthomas0pyramid.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+
    raviartthomas0pyramid.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::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,25 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+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:_\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+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/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: raviartthomas0pyramid.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+
    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 (C) 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_RAVIARTTHOMAS0_PYRAMID_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_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::pyramid;
    \n+
    73 }
    \n
    \n-
    128}
    \n-
    129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_LOCALBASIS_HH
    \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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    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: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,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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 DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_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 \"_\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-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 _\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-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 _\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_\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_\by_\br_\ba_\bm_\bi_\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:34\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:42\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:_\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\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 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: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: raviartthomas03dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas4cube2dlocalcoefficients.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-
    raviartthomas03dlocalcoefficients.hh File Reference
    \n+
    raviartthomas4cube2dlocalcoefficients.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n-#include <iostream>
    \n #include <vector>
    \n-#include <dune/localfunctions/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::RT03DLocalCoefficients
     Layout map for RT0 elements. 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,24 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas03dlocalcoefficients.hh File Reference\n+raviartthomas4cube2dlocalcoefficients.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 \"_\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_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for RT0 elements. _\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/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: raviartthomas03dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas4cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,85 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas03dlocalcoefficients.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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_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-
    \n-\n-
    24 {
    \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+\n
    28 {
    \n-
    29 for (std::size_t i=0; i<4; i++)
    \n-
    30 li[i] = LocalKey(i,1,0);
    \n-
    31 }
    \n-
    \n-
    32
    \n-
    \n-
    34 std::size_t size () const
    \n-
    35 {
    \n-
    36 return 4;
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    \n-
    40 const LocalKey& localKey (std::size_t i) const
    \n-
    41 {
    \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+
    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
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Layout map for RT0 elements.
    Definition raviartthomas03dlocalcoefficients.hh:24
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas03dlocalcoefficients.hh:40
    \n-
    RT03DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas03dlocalcoefficients.hh:27
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas03dlocalcoefficients.hh:34
    \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,78 +1,83 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_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-_\b2_\b3 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-24 {\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_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : li(4)\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 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-31 }\n-32\n-_\b3_\b4 std::size_t _\bs_\bi_\bz_\be () const\n-35 {\n-36 return 4;\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 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+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 _\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:23\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-Layout map for RT0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.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_\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:40\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+_\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 raviartthomas03dlocalcoefficients.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_\b:_\b:_\bs_\bi_\bz_\be\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 raviartthomas03dlocalcoefficients.hh:34\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/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: raviartthomas03dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas4cube2dlocalbasis.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-
    raviartthomas03dlocalbasis.hh File Reference
    \n+
    raviartthomas4cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n+
    #include <bitset>
    \n+#include <numeric>
    \n+#include <vector>
    \n #include <dune/common/fmatrix.hh>
    \n-#include <dune/localfunctions/common/localbasis.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::RT03DLocalBasis< D, R >
     Lowest order Raviart-Thomas shape functions on the reference tetrahedron. 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,24 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas03dlocalbasis.hh File Reference\n+raviartthomas4cube2dlocalbasis.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 \"_\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_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b _\b>\n-\u00a0 Lowest order Raviart-Thomas shape functions on the reference\n- tetrahedron. _\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/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: raviartthomas03dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas4cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,143 +70,814 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas03dlocalbasis.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n+
    8#include <bitset>
    \n+
    9#include <numeric>
    \n+
    10#include <vector>
    \n
    11
    \n-\n+
    12#include <dune/common/fmatrix.hh>
    \n
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    24 template<class D, class R>
    \n-
    \n-\n-
    26 {
    \n-
    27 public:
    \n-
    28 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n-
    29 Dune::FieldMatrix<R,3,3> > Traits;
    \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-
    \n-
    32 RT03DLocalBasis (std::bitset<4> s = 0)
    \n-
    33 {
    \n-
    34 for (int i=0; i<4; i++)
    \n-
    35 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    36 }
    \n-
    \n-
    37
    \n-
    \n-
    39 unsigned int size () const
    \n-
    40 {
    \n-
    41 return 4;
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-
    45 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    46 std::vector<typename Traits::RangeType>& out) const
    \n-
    47 {
    \n-
    48 out.resize(4);
    \n-
    49 auto c = std::sqrt(2.0);
    \n-
    50 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};
    \n-
    51 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };
    \n-
    52 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };
    \n-
    53 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };
    \n-
    54 }
    \n-
    \n-
    55
    \n-
    57 inline void
    \n-
    \n-
    58 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    59 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    60 {
    \n-
    61 out.resize(4);
    \n-
    62 for (int i=0; i<4; i++)
    \n-
    63 {
    \n-
    64 auto c = std::sqrt(2.0);
    \n-
    65 out[i][0] = {c*sign_[i], 0, 0};
    \n-
    66 out[i][1] = { 0,c*sign_[i], 0};
    \n-
    67 out[i][2] = { 0, 0,c*sign_[i]};
    \n-
    68 }
    \n-
    69 }
    \n-
    \n-
    70
    \n-
    \n-
    72 void partial (const std::array<unsigned int, 3>& order,
    \n-
    73 const typename Traits::DomainType& in, // position
    \n-
    74 std::vector<typename Traits::RangeType>& out) const // return value
    \n-
    75 {
    \n-
    76 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    77 if (totalOrder == 0) {
    \n-
    78 evaluateFunction(in, out);
    \n-
    79 } else if (totalOrder == 1) {
    \n-
    80 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    81 out.resize(size());
    \n-
    82
    \n-
    83 for (int i=0; i<size(); i++)
    \n-
    84 {
    \n-
    85 out[i][direction] = sign_[i]* std::sqrt(2.0) ;
    \n-
    86 out[i][(direction+1)%3] = 0;
    \n-
    87 out[i][(direction+2)%3] = 0;
    \n-
    88 }
    \n-
    89 } else {
    \n-
    90 out.resize(size());
    \n-
    91 for (std::size_t i = 0; i < size(); ++i)
    \n-
    92 for (std::size_t j = 0; j < 3; ++j)
    \n-
    93 out[i][j] = 0;
    \n-
    94 }
    \n-
    95
    \n-
    96 }
    \n-
    \n-
    97
    \n-
    \n-
    99 unsigned int order () const
    \n-
    100 {
    \n-
    101 return 1;
    \n-
    102 }
    \n-
    \n-
    103
    \n-
    104 private:
    \n-
    105
    \n-
    106 // Signs of the face normals
    \n-
    107 std::array<R,4> sign_;
    \n-
    108 };
    \n-
    \n-
    109}
    \n-
    110#endif
    \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+
    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+
    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
    Definition bdfmcube.hh:18
    \n
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Lowest order Raviart-Thomas shape functions on the reference tetrahedron.
    Definition raviartthomas03dlocalbasis.hh:26
    \n-
    RT03DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas03dlocalbasis.hh:32
    \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:72
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas03dlocalbasis.hh:99
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas03dlocalbasis.hh:39
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas03dlocalbasis.hh:58
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas03dlocalbasis.hh:45
    \n-
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas03dlocalbasis.hh:29
    \n-\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,157 +1,826 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALBASIS_HH\n 7\n-8#include \n-9\n-10#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_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+12#include \n 13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-24 template\n-_\b2_\b5 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\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<_\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-_\b2_\b9 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\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-_\b3_\b2 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n-33 {\n-34 for (int i=0; i<4; i++)\n-35 sign_[i] = s[i] ? -1.0 : 1.0;\n-36 }\n-37\n-_\b3_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-40 {\n-41 return 4;\n-42 }\n-43\n-_\b4_\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-46 std::vector& out) const\n-47 {\n-48 out.resize(4);\n-49 auto c = std::sqrt(2.0);\n-50 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};\n-51 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };\n-52 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };\n-53 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };\n-54 }\n-55\n-57 inline void\n-_\b5_\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-59 std::vector& out) const // return value\n-60 {\n-61 out.resize(4);\n-62 for (int i=0; i<4; i++)\n-63 {\n-64 auto c = std::sqrt(2.0);\n-65 out[i][0] = {c*sign_[i], 0, 0};\n-66 out[i][1] = { 0,c*sign_[i], 0};\n-67 out[i][2] = { 0, 0,c*sign_[i]};\n-68 }\n-69 }\n-70\n-_\b7_\b2 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-73 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 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-77 if (totalOrder == 0) {\n-78 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-79 } else if (totalOrder == 1) {\n-80 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-81 out.resize(_\bs_\bi_\bz_\be());\n-82\n-83 for (int i=0; i<_\bs_\bi_\bz_\be(); i++)\n-84 {\n-85 out[i][direction] = sign_[i]* std::sqrt(2.0) ;\n-86 out[i][(direction+1)%3] = 0;\n-87 out[i][(direction+2)%3] = 0;\n-88 }\n-89 } else {\n-90 out.resize(_\bs_\bi_\bz_\be());\n-91 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-92 for (std::size_t j = 0; j < 3; ++j)\n-93 out[i][j] = 0;\n-94 }\n-95\n-96 }\n-97\n-_\b9_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n-100 {\n-101 return 1;\n-102 }\n-103\n-104 private:\n-105\n-106 // Signs of the face normals\n-107 std::array sign_;\n-108 };\n-109}\n-110#endif\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 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[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+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 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:_\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:34\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:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Lowest order Raviart-Thomas shape functions on the reference tetrahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:26\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:32\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+_\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 raviartthomas03dlocalbasis.hh:72\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:99\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+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 raviartthomas03dlocalbasis.hh:39\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+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 raviartthomas03dlocalbasis.hh:58\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:45\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:29\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 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/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: raviartthomas03dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas4cube2dlocalinterpolation.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-
    raviartthomas03dlocalinterpolation.hh File Reference
    \n+
    raviartthomas4cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cmath>
    \n-#include <array>
    \n-#include <bitset>
    \n-#include <vector>
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n #include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::RT03DLocalInterpolation< LB >
    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,24 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas03dlocalinterpolation.hh File Reference\n-#include \n-#include \n-#include \n+raviartthomas4cube2dlocalinterpolation.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_\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_\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+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/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: raviartthomas03dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas4cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,99 +70,176 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas03dlocalinterpolation.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 (C) 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_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH
    \n-
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH
    \n+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <cmath>
    \n-
    9#include <array>
    \n-
    10#include <bitset>
    \n-
    11#include <vector>
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16 template<class LB>
    \n-
    \n-\n-
    18 {
    \n-
    19 public:
    \n-
    20
    \n-
    \n-
    22 RT03DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    23 {
    \n-
    24 using std::sqrt;
    \n-
    25 for (std::size_t i=0; i<sign_.size(); i++)
    \n-
    26 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+\n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n
    27
    \n-
    28 m_[0] = {1/3.0, 1/3.0, 0.0};
    \n-
    29 m_[1] = {1/3.0, 0.0, 1/3.0};
    \n-
    30 m_[2] = { 0.0, 1/3.0, 1/3.0};
    \n-
    31 m_[3] = {1/3.0, 1/3.0, 1/3.0};
    \n-
    32 n_[0] = { 0.0, 0.0, -1.0};
    \n-
    33 n_[1] = { 0.0, -1.0, 0.0};
    \n-
    34 n_[2] = { -1.0, 0.0, 0.0};
    \n-
    35 n_[3] = {1.0/sqrt(3.0), 1.0/sqrt(3.0), 1.0/sqrt(3.0)};
    \n-
    36 c_[0] = sqrt(2.0);
    \n-
    37 c_[1] = sqrt(2.0);
    \n-
    38 c_[2] = sqrt(2.0);
    \n-
    39 c_[3] = sqrt(2.0)/sqrt(3.0);
    \n-
    40 }
    \n-
    \n-
    41
    \n-
    42 template<typename F, typename C>
    \n-
    \n-
    43 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    44 {
    \n-
    45 // f gives v*outer normal at a point on the face!
    \n-
    46 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    47
    \n-
    48 out.resize(4);
    \n-
    49
    \n-
    50 for (int i=0; i<4; i++)
    \n+
    28 public:
    \n+
    29
    \n+
    \n+
    35 RT4Cube2DLocalInterpolation (unsigned int s = 0)
    \n+
    36 {
    \n+
    37 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n+
    38 if (s & 1)
    \n+
    39 {
    \n+
    40 sign0 *= -1.0;
    \n+
    41 }
    \n+
    42 if (s & 2)
    \n+
    43 {
    \n+
    44 sign1 *= -1.0;
    \n+
    45 }
    \n+
    46 if (s & 4)
    \n+
    47 {
    \n+
    48 sign2 *= -1.0;
    \n+
    49 }
    \n+
    50 if (s & 8)
    \n
    51 {
    \n-
    52 auto y = f(m_[i]);
    \n-
    53 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1]+y[2]*n_[i][2])*sign_[i]/c_[i];
    \n-
    54 }
    \n-
    55 }
    \n-
    \n-
    56
    \n-
    57 private:
    \n-
    58 // Face orientations
    \n-
    59 std::array<typename LB::Traits::RangeFieldType,4> sign_;
    \n-
    60 // Face midpoints of the reference tetrahedron
    \n-
    61 std::array<typename LB::Traits::DomainType,4> m_;
    \n-
    62 // Unit outer normals of the reference tetrahedron
    \n-
    63 std::array<typename LB::Traits::DomainType,4> n_;
    \n-
    64 // Inverse triangle face area
    \n-
    65 std::array<typename LB::Traits::RangeFieldType,4> c_;
    \n-
    66 };
    \n-
    \n-
    67}
    \n-
    68
    \n-
    69#endif
    \n+
    52 sign3 *= -1.0;
    \n+
    53 }
    \n+
    54
    \n+
    55 n0[0] = -1.0;
    \n+
    56 n0[1] = 0.0;
    \n+
    57 n1[0] = 1.0;
    \n+
    58 n1[1] = 0.0;
    \n+
    59 n2[0] = 0.0;
    \n+
    60 n2[1] = -1.0;
    \n+
    61 n3[0] = 0.0;
    \n+
    62 n3[1] = 1.0;
    \n+
    63 }
    \n+
    \n+
    64
    \n+
    73 template<typename F, typename C>
    \n+
    \n+
    74 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    75 {
    \n+
    76 // f gives v*outer normal at a point on the edge!
    \n+
    77 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    78 typedef typename LB::Traits::DomainFieldType Vector;
    \n+
    79
    \n+
    80 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    81
    \n+
    82 out.resize(60);
    \n+
    83 fill(out.begin(), out.end(), 0.0);
    \n+
    84
    \n+
    85 const int qOrder = 12;
    \n+
    86 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    87
    \n+
    88 for (typename QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n+
    89 {
    \n+
    90 Scalar qPos = it->position();
    \n+
    91 typename LB::Traits::DomainType localPos;
    \n+
    92
    \n+
    93 localPos[0] = 0.0;
    \n+
    94 localPos[1] = qPos;
    \n+
    95 auto y = f(localPos);
    \n+
    96 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n+
    97 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    98 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0;
    \n+
    99 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+
    100 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+
    101
    \n+
    102 localPos[0] = 1.0;
    \n+
    103 localPos[1] = qPos;
    \n+
    104 y = f(localPos);
    \n+
    105 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n+
    106 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    107 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1;
    \n+
    108 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+
    109 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+
    110
    \n+
    111 localPos[0] = qPos;
    \n+
    112 localPos[1] = 0.0;
    \n+
    113 y = f(localPos);
    \n+
    114 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n+
    115 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n+
    116 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2;
    \n+
    117 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+
    118 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+
    119
    \n+
    120 localPos[0] = qPos;
    \n+
    121 localPos[1] = 1.0;
    \n+
    122 y = f(localPos);
    \n+
    123 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n+
    124 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n+
    125 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign3;
    \n+
    126 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+
    127 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+
    128 }
    \n+
    129
    \n+
    130 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    131
    \n+
    132 for (typename QuadratureRule<Vector,2>::const_iterator it = rule2.begin();
    \n+
    133 it != rule2.end(); ++it)
    \n+
    134 {
    \n+
    135 FieldVector<double,2> qPos = it->position();
    \n+
    136
    \n+
    137 auto y = f(qPos);
    \n+
    138 std::vector<std::vector<double> > l(2,std::vector<double> (5));
    \n+
    139 l[0][0]=1.0;
    \n+
    140 l[1][0]=1.0;
    \n+
    141 l[0][1]=2.0*qPos[0]-1.0;
    \n+
    142 l[1][1]=2.0*qPos[1]-1.0;
    \n+
    143 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n+
    144 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n+
    145 l[0][3]=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n+
    146 l[1][3]=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n+
    147 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+
    148 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+
    149
    \n+
    150 for (int i=0;i<4;i++)
    \n+
    151 for (int j=0;j<5;j++)
    \n+
    152 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();
    \n+
    153
    \n+
    154 for (int i=0;i<5;i++)
    \n+
    155 for (int j=0;j<4;j++)
    \n+
    156 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();
    \n+
    157 }
    \n+
    158 }
    \n+
    \n+
    159
    \n+
    160 private:
    \n+
    161 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n+
    162 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n+
    163 };
    \n+
    \n+
    164}
    \n+
    165
    \n+
    166#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Definition raviartthomas03dlocalinterpolation.hh:18
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas03dlocalinterpolation.hh:43
    \n-
    RT03DLocalInterpolation(std::bitset< 4 > s=0)
    Constructor with given set of face orientations.
    Definition raviartthomas03dlocalinterpolation.hh:22
    \n+
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas4cube2dlocalinterpolation.hh:26
    \n+
    RT4Cube2DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2dlocalinterpolation.hh:35
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas4cube2dlocalinterpolation.hh:74
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,96 +1,192 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-raviartthomas03dlocalinterpolation.hh\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 (C) 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_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH\n-6#define\n-DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_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#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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16 template\n-_\b1_\b7 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-18 {\n-19 public:\n-20\n-_\b2_\b2 _\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-23 {\n-24 using std::sqrt;\n-25 for (std::size_t i=0; i\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+24 template\n+_\b2_\b5 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+26 {\n 27\n-28 m_[0] = {1/3.0, 1/3.0, 0.0};\n-29 m_[1] = {1/3.0, 0.0, 1/3.0};\n-30 m_[2] = { 0.0, 1/3.0, 1/3.0};\n-31 m_[3] = {1/3.0, 1/3.0, 1/3.0};\n-32 n_[0] = { 0.0, 0.0, -1.0};\n-33 n_[1] = { 0.0, -1.0, 0.0};\n-34 n_[2] = { -1.0, 0.0, 0.0};\n-35 n_[3] = {1.0/sqrt(3.0), 1.0/sqrt(3.0), 1.0/sqrt(3.0)};\n-36 c_[0] = sqrt(2.0);\n-37 c_[1] = sqrt(2.0);\n-38 c_[2] = sqrt(2.0);\n-39 c_[3] = sqrt(2.0)/sqrt(3.0);\n-40 }\n-41\n-42 template\n-_\b4_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-44 {\n-45 // f gives v*outer normal at a point on the face!\n-46 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-47\n-48 out.resize(4);\n-49\n-50 for (int i=0; i<4; i++)\n+28 public:\n+29\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 (unsigned int s = 0)\n+36 {\n+37 sign0 = sign1 = sign2 = sign3 = 1.0;\n+38 if (s & 1)\n+39 {\n+40 sign0 *= -1.0;\n+41 }\n+42 if (s & 2)\n+43 {\n+44 sign1 *= -1.0;\n+45 }\n+46 if (s & 4)\n+47 {\n+48 sign2 *= -1.0;\n+49 }\n+50 if (s & 8)\n 51 {\n-52 auto y = f(m_[i]);\n-53 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1]+y[2]*n_[i][2])*sign_[i]/c_[i];\n-54 }\n-55 }\n-56\n-57 private:\n-58 // Face orientations\n-59 std::array sign_;\n-60 // Face midpoints of the reference tetrahedron\n-61 std::array m_;\n-62 // Unit outer normals of the reference tetrahedron\n-63 std::array n_;\n-64 // Inverse triangle face area\n-65 std::array c_;\n-66 };\n-67}\n-68\n-69#endif\n+52 sign3 *= -1.0;\n+53 }\n+54\n+55 n0[0] = -1.0;\n+56 n0[1] = 0.0;\n+57 n1[0] = 1.0;\n+58 n1[1] = 0.0;\n+59 n2[0] = 0.0;\n+60 n2[1] = -1.0;\n+61 n3[0] = 0.0;\n+62 n3[1] = 1.0;\n+63 }\n+64\n+73 template\n+_\b7_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+75 {\n+76 // f gives v*outer normal at a point on the edge!\n+77 typedef typename LB::Traits::RangeFieldType Scalar;\n+78 typedef typename LB::Traits::DomainFieldType Vector;\n+79\n+80 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+81\n+82 out.resize(60);\n+83 fill(out.begin(), out.end(), 0.0);\n+84\n+85 const int qOrder = 12;\n+86 const QuadratureRule& rule = QuadratureRules::rule\n+(GeometryTypes::cube(1), qOrder);\n+87\n+88 for (typename QuadratureRule::const_iterator it=rule.begin();\n+it!=rule.end(); ++it)\n+89 {\n+90 Scalar qPos = it->position();\n+91 typename LB::Traits::DomainType localPos;\n+92\n+93 localPos[0] = 0.0;\n+94 localPos[1] = qPos;\n+95 auto y = f(localPos);\n+96 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n+97 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n+98 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign0;\n+99 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+100 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+101\n+102 localPos[0] = 1.0;\n+103 localPos[1] = qPos;\n+104 y = f(localPos);\n+105 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n+106 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n+107 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign1;\n+108 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+109 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+110\n+111 localPos[0] = qPos;\n+112 localPos[1] = 0.0;\n+113 y = f(localPos);\n+114 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n+115 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n+116 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign2;\n+117 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+118 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+119\n+120 localPos[0] = qPos;\n+121 localPos[1] = 1.0;\n+122 y = f(localPos);\n+123 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n+124 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n+125 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n+>weight()*sign3;\n+126 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+127 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+128 }\n+129\n+130 const QuadratureRule& rule2 = QuadratureRules::rule\n+(GeometryTypes::cube(2), qOrder);\n+131\n+132 for (typename QuadratureRule::const_iterator it = rule2.begin();\n+133 it != rule2.end(); ++it)\n+134 {\n+135 FieldVector qPos = it->position();\n+136\n+137 auto y = f(qPos);\n+138 std::vector > l(2,std::vector (5));\n+139 l[0][0]=1.0;\n+140 l[1][0]=1.0;\n+141 l[0][1]=2.0*qPos[0]-1.0;\n+142 l[1][1]=2.0*qPos[1]-1.0;\n+143 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n+144 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n+145 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+146 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+147 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+148 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+149\n+150 for (int i=0;i<4;i++)\n+151 for (int j=0;j<5;j++)\n+152 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();\n+153\n+154 for (int i=0;i<5;i++)\n+155 for (int j=0;j<4;j++)\n+156 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();\n+157 }\n+158 }\n+159\n+160 private:\n+161 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n+162 typename LB::Traits::DomainType n0, n1, n2, n3;\n+163 };\n+164}\n+165\n+166#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_\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:18\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+_\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:26\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:35\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalinterpolation.hh:43\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:22\n+Interpolate a given function with shape functions.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas4cube2dlocalinterpolation.hh:74\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/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: raviartthomas0pyramid.hh File Reference\n+dune-localfunctions: raviartthomas0cube2dall.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-
    raviartthomas0pyramid.hh File Reference
    \n+
    raviartthomas0cube2dall.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "raviartthomas0pyramid/raviartthomas0pyramidlocalbasis.hh"
    \n-#include "raviartthomas0pyramid/raviartthomas0pyramidlocalcoefficients.hh"
    \n-#include "raviartthomas0pyramid/raviartthomas0pyramidlocalinterpolation.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+#include <dune/localfunctions/common/localinterpolation.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::RT0PyramidLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on pyramids. More...
    class  Dune::RT0Cube2DLocalBasis< D, R >
     Lowest order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    class  Dune::RT0Cube2DLocalInterpolation< LB >
     Lowest order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    class  Dune::RT0Cube2DLocalCoefficients
     Layout map for RT0 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,35 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\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+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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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_\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:_\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 Lowest order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\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 Lowest order Raviart-Thomas shape functions on the reference\n+ quadrilateral. _\bM_\bo_\br_\be_\b._\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 Layout map for RT0 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/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: raviartthomas0pyramid.hh Source File\n+dune-localfunctions: raviartthomas0cube2dall.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,252 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0pyramid.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_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+
    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+\n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \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-\n-
    37 {}
    \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-
    38
    \n-
    \n-\n-
    45 basis(s),
    \n-
    46 interpolation(s)
    \n-
    47 {}
    \n-
    \n-
    48
    \n+
    47
    \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+
    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-\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::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+
    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+
    132 template<class LB>
    \n+
    \n+\n+
    134 {
    \n+
    135 public:
    \n+
    136
    \n+
    \n+
    138 RT0Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    139 {
    \n+
    140 for (int i=0; i<4; i++)
    \n+
    141 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    142
    \n+
    143 m0 = {0.0, 0.5};
    \n+
    144 m1 = {1.0, 0.5};
    \n+
    145 m2 = {0.5, 0.0};
    \n+
    146 m3 = {0.5, 1.0};
    \n+
    147
    \n+
    148 n0 = {-1.0, 0.0};
    \n+
    149 n1 = { 1.0, 0.0};
    \n+
    150 n2 = { 0.0, -1.0};
    \n+
    151 n3 = { 0.0, 1.0};
    \n+
    152 }
    \n+
    \n+
    153
    \n+
    154 template<typename F, typename C>
    \n+
    \n+
    155 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    156 {
    \n+
    157 // f gives v*outer normal at a point on the edge!
    \n+
    158 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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+
    186 {
    \n+
    187 public:
    \n+
    \n+\n+
    190 {
    \n+
    191 for (std::size_t i=0; i<4; i++)
    \n+
    192 li[i] = LocalKey(i,1,0);
    \n+
    193 }
    \n+
    \n+
    194
    \n+
    \n+
    196 std::size_t size () const
    \n+
    197 {
    \n+
    198 return 4;
    \n+
    199 }
    \n+
    \n+
    200
    \n+
    \n+
    202 const LocalKey& localKey (std::size_t i) const
    \n+
    203 {
    \n+
    204 return li[i];
    \n+
    205 }
    \n+
    \n+
    206
    \n+
    207 private:
    \n+
    208 std::vector<LocalKey> li;
    \n+
    209 };
    \n+
    \n+
    210
    \n+
    211}
    \n+
    212#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_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 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:24
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Lowest order Raviart-Thomas shape functions on the reference quadrilateral.
    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+
    Lowest order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas0cube2dall.hh:134
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas0cube2dall.hh:155
    \n+
    RT0Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Constructor with explicitly given edge orientations.
    Definition raviartthomas0cube2dall.hh:138
    \n+
    Layout map for RT0 elements on quadrilaterals.
    Definition raviartthomas0cube2dall.hh:186
    \n+
    RT0Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube2dall.hh:189
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube2dall.hh:196
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube2dall.hh:202
    \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,271 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_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-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+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+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_\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+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_\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+_\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-_\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::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_\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_\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+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+132 template\n+_\b1_\b3_\b3 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+134 {\n+135 public:\n+136\n+_\b1_\b3_\b8 _\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+139 {\n+140 for (int i=0; i<4; i++)\n+141 sign_[i] = s[i] ? -1.0 : 1.0;\n+142\n+143 m0 = {0.0, 0.5};\n+144 m1 = {1.0, 0.5};\n+145 m2 = {0.5, 0.0};\n+146 m3 = {0.5, 1.0};\n+147\n+148 n0 = {-1.0, 0.0};\n+149 n1 = { 1.0, 0.0};\n+150 n2 = { 0.0, -1.0};\n+151 n3 = { 0.0, 1.0};\n+152 }\n+153\n+154 template\n+_\b1_\b5_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+156 {\n+157 // f gives v*outer normal at a point on the edge!\n+158 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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_\b5 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+186 {\n+187 public:\n+_\b1_\b8_\b9 _\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+190 {\n+191 for (std::size_t i=0; i<4; i++)\n+192 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+193 }\n+194\n+_\b1_\b9_\b6 std::size_t _\bs_\bi_\bz_\be () const\n+197 {\n+198 return 4;\n+199 }\n+200\n+_\b2_\b0_\b2 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+203 {\n+204 return li[i];\n+205 }\n+206\n+207 private:\n+208 std::vector li;\n+209 };\n+210\n+211}\n+212#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:_\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+_\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:34\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:42\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:23\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+Lowest order Raviart-Thomas shape functions on the reference quadrilateral.\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 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+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+Lowest order Raviart-Thomas shape functions on the reference quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:134\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 &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:155\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:138\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+Layout map for RT0 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:186\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 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:24\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:189\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:196\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:202\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 ===============================================================================\n 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: raviartthomas2cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas03d.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-
    raviartthomas2cube2dlocalcoefficients.hh File Reference
    \n+
    raviartthomas03d.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::RT2Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-2 elements on quadrilaterals. 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,23 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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-#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+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 _\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:_\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/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: raviartthomas2cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas03d.hh Source File\n \n \n \n \n \n \n \n@@ -70,83 +70,125 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2dlocalcoefficients.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 (C) 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_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_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+
    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-
    41
    \n+
    37
    \n
    \n-
    43 std::size_t size () const
    \n-
    44 {
    \n-
    45 return 24;
    \n-
    46 }
    \n+
    43 RT03DLocalFiniteElement (std::bitset<4> s) :
    \n+
    44 basis(s),
    \n+
    45 interpolation(s)
    \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+
    \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 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-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    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+
    Lowest order Raviart-Thomas shape functions on the reference tetrahedron.
    Definition raviartthomas03dlocalbasis.hh:26
    \n+
    Layout map for RT0 elements.
    Definition raviartthomas03dlocalcoefficients.hh:24
    \n+
    Definition raviartthomas03dlocalinterpolation.hh:18
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,81 +1,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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 DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_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+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 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+_\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 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+_\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_\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_\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 _\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: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\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:_\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 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 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+Lowest order Raviart-Thomas shape functions on the reference tetrahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:26\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+Layout map for RT0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:24\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:18\n ===============================================================================\n 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: raviartthomas2cube2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas3cube2dlocalinterpolation.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-
    raviartthomas2cube2dlocalbasis.hh File Reference
    \n+
    raviartthomas3cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.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::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,24 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas2cube2dlocalbasis.hh File Reference\n-#include \n+raviartthomas3cube2dlocalinterpolation.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_\bb_\ba_\bs_\bi_\bs_\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_\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_\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+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"}]}, {"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: raviartthomas2cube2dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas3cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,300 +70,167 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2dlocalbasis.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 (C) 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_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n+
    8#include <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+\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+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n+
    27
    \n+
    28 public:
    \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-
    58 }
    \n-
    \n-
    59
    \n-
    \n-
    61 unsigned int size () const
    \n-
    62 {
    \n-
    63 return 24;
    \n-
    64 }
    \n-
    \n+
    \n+
    35 RT3Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    36 {
    \n+
    37 for (size_t i=0; i<4; i++)
    \n+
    38 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    39
    \n+
    40 n_[0] = {-1.0, 0.0};
    \n+
    41 n_[1] = { 1.0, 0.0};
    \n+
    42 n_[2] = { 0.0, -1.0};
    \n+
    43 n_[3] = { 0.0, 1.0};
    \n+
    44 }
    \n+
    \n+
    45
    \n+
    54 template<typename F, typename C>
    \n+
    \n+
    55 void interpolate (const F& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n+
    62
    \n+
    63 out.resize(40);
    \n+
    64 fill(out.begin(), out.end(), 0.0);
    \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-
    282}
    \n-
    283#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n+
    66 const int qOrder = 9;
    \n+
    67 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n+
    68
    \n+
    69 for (auto&& qp : rule1)
    \n+
    70 {
    \n+
    71 Scalar qPos = qp.position();
    \n+
    72 typename LB::Traits::DomainType localPos;
    \n+
    73
    \n+
    74 localPos = {0.0, qPos};
    \n+
    75 auto y = f(localPos);
    \n+
    76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n+
    77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    78 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+
    79 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+
    80
    \n+
    81 localPos = {1.0, qPos};
    \n+
    82 y = f(localPos);
    \n+
    83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n+
    84 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    85 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+
    86 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+
    87
    \n+
    88 localPos = {qPos, 0.0};
    \n+
    89 y = f(localPos);
    \n+
    90 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n+
    91 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    92 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+
    93 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+
    94
    \n+
    95 localPos = {qPos, 1.0};
    \n+
    96 y = f(localPos);
    \n+
    97 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n+
    98 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    99 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+
    100 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+
    101 }
    \n+
    102
    \n+
    103 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    104
    \n+
    105 for (auto&& qp : rule2)
    \n+
    106 {
    \n+
    107 auto qPos = qp.position();
    \n+
    108
    \n+
    109 auto y = f(qPos);
    \n+
    110 double l0_x=1.0;
    \n+
    111 double l1_x=2.0*qPos[0]-1.0;
    \n+
    112 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n+
    113 double l3_x=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n+
    114 double l0_y=1.0;
    \n+
    115 double l1_y=2.0*qPos[1]-1.0;
    \n+
    116 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n+
    117 double l3_y=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n+
    118
    \n+
    119 out[16] += y[0]*l0_x*l0_y*qp.weight();
    \n+
    120 out[17] += y[0]*l0_x*l1_y*qp.weight();
    \n+
    121 out[18] += y[0]*l0_x*l2_y*qp.weight();
    \n+
    122 out[19] += y[0]*l0_x*l3_y*qp.weight();
    \n+
    123 out[20] += y[0]*l1_x*l0_y*qp.weight();
    \n+
    124 out[21] += y[0]*l1_x*l1_y*qp.weight();
    \n+
    125 out[22] += y[0]*l1_x*l2_y*qp.weight();
    \n+
    126 out[23] += y[0]*l1_x*l3_y*qp.weight();
    \n+
    127 out[24] += y[0]*l2_x*l0_y*qp.weight();
    \n+
    128 out[25] += y[0]*l2_x*l1_y*qp.weight();
    \n+
    129 out[26] += y[0]*l2_x*l2_y*qp.weight();
    \n+
    130 out[27] += y[0]*l2_x*l3_y*qp.weight();
    \n+
    131
    \n+
    132 out[28] += y[1]*l0_x*l0_y*qp.weight();
    \n+
    133 out[29] += y[1]*l0_x*l1_y*qp.weight();
    \n+
    134 out[30] += y[1]*l0_x*l2_y*qp.weight();
    \n+
    135 out[31] += y[1]*l1_x*l0_y*qp.weight();
    \n+
    136 out[32] += y[1]*l1_x*l1_y*qp.weight();
    \n+
    137 out[33] += y[1]*l1_x*l2_y*qp.weight();
    \n+
    138 out[34] += y[1]*l2_x*l0_y*qp.weight();
    \n+
    139 out[35] += y[1]*l2_x*l1_y*qp.weight();
    \n+
    140 out[36] += y[1]*l2_x*l2_y*qp.weight();
    \n+
    141 out[37] += y[1]*l3_x*l0_y*qp.weight();
    \n+
    142 out[38] += y[1]*l3_x*l1_y*qp.weight();
    \n+
    143 out[39] += y[1]*l3_x*l2_y*qp.weight();
    \n+
    144 }
    \n+
    145 }
    \n+
    \n+
    146
    \n+
    147 private:
    \n+
    148 // Edge orientations
    \n+
    149 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n+
    150
    \n+
    151 // Edge normals
    \n+
    152 std::array<typename LB::Traits::DomainType, 4> n_;
    \n+
    153 };
    \n+
    \n+
    154}
    \n+
    155
    \n+
    156#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    Second order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas3cube2dlocalinterpolation.hh:26
    \n+
    RT3Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas3cube2dlocalinterpolation.hh:35
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas3cube2dlocalinterpolation.hh:55
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,437 +1,175 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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_\b2_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+24 template\n+_\b2_\b5 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+26 {\n+27\n+28 public:\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 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+_\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 (std::bitset<4> s = 0)\n+36 {\n+37 for (size_t i=0; i<4; i++)\n+38 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+39\n+40 n_[0] = {-1.0, 0.0};\n+41 n_[1] = { 1.0, 0.0};\n+42 n_[2] = { 0.0, -1.0};\n+43 n_[3] = { 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& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+62\n+63 out.resize(40);\n+64 fill(out.begin(), out.end(), 0.0);\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+66 const int qOrder = 9;\n+67 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n+qOrder);\n+68\n+69 for (auto&& qp : rule1)\n+70 {\n+71 Scalar qPos = qp.position();\n+72 typename LB::Traits::DomainType localPos;\n+73\n+74 localPos = {0.0, qPos};\n+75 auto y = f(localPos);\n+76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n+77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n+78 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+79 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+80\n+81 localPos = {1.0, qPos};\n+82 y = f(localPos);\n+83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n+84 out[5] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n+85 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+86 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+87\n+88 localPos = {qPos, 0.0};\n+89 y = f(localPos);\n+90 out[8] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n+91 out[9] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n+92 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+93 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+94\n+95 localPos = {qPos, 1.0};\n+96 y = f(localPos);\n+97 out[12] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n+98 out[13] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n+99 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+100 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+101 }\n+102\n+103 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n+qOrder);\n+104\n+105 for (auto&& qp : rule2)\n+106 {\n+107 auto qPos = qp.position();\n+108\n+109 auto y = f(qPos);\n+110 double l0_x=1.0;\n+111 double l1_x=2.0*qPos[0]-1.0;\n+112 double l2_x=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n+113 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+114 double l0_y=1.0;\n+115 double l1_y=2.0*qPos[1]-1.0;\n+116 double l2_y=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n+117 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+118\n+119 out[16] += y[0]*l0_x*l0_y*qp.weight();\n+120 out[17] += y[0]*l0_x*l1_y*qp.weight();\n+121 out[18] += y[0]*l0_x*l2_y*qp.weight();\n+122 out[19] += y[0]*l0_x*l3_y*qp.weight();\n+123 out[20] += y[0]*l1_x*l0_y*qp.weight();\n+124 out[21] += y[0]*l1_x*l1_y*qp.weight();\n+125 out[22] += y[0]*l1_x*l2_y*qp.weight();\n+126 out[23] += y[0]*l1_x*l3_y*qp.weight();\n+127 out[24] += y[0]*l2_x*l0_y*qp.weight();\n+128 out[25] += y[0]*l2_x*l1_y*qp.weight();\n+129 out[26] += y[0]*l2_x*l2_y*qp.weight();\n+130 out[27] += y[0]*l2_x*l3_y*qp.weight();\n+131\n+132 out[28] += y[1]*l0_x*l0_y*qp.weight();\n+133 out[29] += y[1]*l0_x*l1_y*qp.weight();\n+134 out[30] += y[1]*l0_x*l2_y*qp.weight();\n+135 out[31] += y[1]*l1_x*l0_y*qp.weight();\n+136 out[32] += y[1]*l1_x*l1_y*qp.weight();\n+137 out[33] += y[1]*l1_x*l2_y*qp.weight();\n+138 out[34] += y[1]*l2_x*l0_y*qp.weight();\n+139 out[35] += y[1]*l2_x*l1_y*qp.weight();\n+140 out[36] += y[1]*l2_x*l2_y*qp.weight();\n+141 out[37] += y[1]*l3_x*l0_y*qp.weight();\n+142 out[38] += y[1]*l3_x*l1_y*qp.weight();\n+143 out[39] += y[1]*l3_x*l2_y*qp.weight();\n+144 }\n+145 }\n+146\n+147 private:\n+148 // Edge orientations\n+149 std::array sign_;\n+150\n+151 // Edge normals\n+152 std::array n_;\n+153 };\n+154}\n+155\n+156#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:_\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:34\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:42\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+_\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 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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:26\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 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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas3cube2dlocalinterpolation.hh:35\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 &ff, 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:55\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/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: raviartthomas2cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas3cube2dlocalbasis.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-
    raviartthomas2cube2dlocalinterpolation.hh File Reference
    \n+
    raviartthomas3cube2dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \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::RT2Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference triangle. 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,24 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas2cube2dlocalinterpolation.hh File Reference\n+raviartthomas3cube2dlocalbasis.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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_\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:_\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/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: raviartthomas2cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas3cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,140 +70,659 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2dlocalinterpolation.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 (C) 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_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \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-
    24 template<class LB>
    \n-
    \n-\n-
    26 {
    \n-
    27
    \n-
    28 public:
    \n-
    29
    \n-
    \n-
    35 RT2Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    36 {
    \n-
    37 for (size_t i=0; i<4; i++)
    \n-
    38 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    39
    \n-
    40 n_[0] = {-1.0, 0.0};
    \n-
    41 n_[1] = { 1.0, 0.0};
    \n-
    42 n_[2] = { 0.0, -1.0};
    \n-
    43 n_[3] = { 0.0, 1.0};
    \n-
    44 }
    \n-
    \n-
    45
    \n-
    54 template<typename F, typename C>
    \n-
    \n-
    55 void interpolate (const F& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    62
    \n-
    63 out.resize(24);
    \n-
    64 fill(out.begin(), out.end(), 0.0);
    \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+
    47
    \n+
    \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 int qOrder = 6;
    \n-
    67 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    68
    \n-
    69 for (auto&& qp : rule1)
    \n-
    70 {
    \n-
    71 Scalar qPos = qp.position();
    \n-
    72 typename LB::Traits::DomainType localPos;
    \n-
    73
    \n-
    74 localPos = {0.0, qPos};
    \n-
    75 auto y = f(localPos);
    \n-
    76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n-
    77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    78 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-
    79
    \n-
    80 localPos = {1.0, qPos};
    \n-
    81 y = f(localPos);
    \n-
    82 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n-
    83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    84 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-
    85
    \n-
    86 localPos = {qPos, 0.0};
    \n-
    87 y = f(localPos);
    \n-
    88 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n-
    89 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    90 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-
    91
    \n-
    92 localPos = {qPos, 1.0};
    \n-
    93 y = f(localPos);
    \n-
    94 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n-
    95 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    96 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-
    97 }
    \n-
    98
    \n-
    99 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    100
    \n-
    101 for (auto&& qp : rule2)
    \n-
    102 {
    \n-
    103 FieldVector<double,2> qPos = qp.position();
    \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 auto y = f(qPos);
    \n-
    106 out[12] += y[0]*qp.weight();
    \n-
    107 out[13] += y[1]*qp.weight();
    \n-
    108 out[14] += y[0]*qPos[0]*qp.weight();
    \n-
    109 out[15] += y[1]*qPos[0]*qp.weight();
    \n-
    110 out[16] += y[0]*qPos[1]*qp.weight();
    \n-
    111 out[17] += y[1]*qPos[1]*qp.weight();
    \n-
    112 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();
    \n-
    113 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();
    \n-
    114 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();
    \n-
    115 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();
    \n-
    116 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();
    \n-
    117 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();
    \n-
    118 }
    \n-
    119 }
    \n-
    \n-
    120
    \n-
    121 private:
    \n-
    122 // Edge orientations
    \n-
    123 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n-
    124
    \n-
    125 // Edge normals
    \n-
    126 std::array<typename LB::Traits::DomainType, 4> n_;
    \n-
    127 };
    \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-
    128}
    \n-
    129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    640}
    \n+
    641
    \n+
    642#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas2cube2dlocalinterpolation.hh:26
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas2cube2dlocalinterpolation.hh:55
    \n-
    RT2Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2dlocalinterpolation.hh:35
    \n-\n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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,142 +1,671 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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\n+14#include \"../../common/localbasis.hh\"\n 15\n-24 template\n-_\b2_\b5 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-26 {\n-27\n-28 public:\n-29\n-_\b3_\b5 _\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-36 {\n-37 for (size_t i=0; i<4; i++)\n-38 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-39\n-40 n_[0] = {-1.0, 0.0};\n-41 n_[1] = { 1.0, 0.0};\n-42 n_[2] = { 0.0, -1.0};\n-43 n_[3] = { 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& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-62\n-63 out.resize(24);\n-64 fill(out.begin(), out.end(), 0.0);\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 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 int qOrder = 6;\n-67 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n-qOrder);\n-68\n-69 for (auto&& qp : rule1)\n-70 {\n-71 Scalar qPos = qp.position();\n-72 typename LB::Traits::DomainType localPos;\n-73\n-74 localPos = {0.0, qPos};\n-75 auto y = f(localPos);\n-76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n-77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n-78 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-79\n-80 localPos = {1.0, qPos};\n-81 y = f(localPos);\n-82 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n-83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n-84 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-85\n-86 localPos = {qPos, 0.0};\n-87 y = f(localPos);\n-88 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n-89 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n-90 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-91\n-92 localPos = {qPos, 1.0};\n-93 y = f(localPos);\n-94 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n-95 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n-96 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-97 }\n-98\n-99 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n-qOrder);\n-100\n-101 for (auto&& qp : rule2)\n-102 {\n-103 FieldVector qPos = qp.position();\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 auto y = f(qPos);\n-106 out[12] += y[0]*qp.weight();\n-107 out[13] += y[1]*qp.weight();\n-108 out[14] += y[0]*qPos[0]*qp.weight();\n-109 out[15] += y[1]*qPos[0]*qp.weight();\n-110 out[16] += y[0]*qPos[1]*qp.weight();\n-111 out[17] += y[1]*qPos[1]*qp.weight();\n-112 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();\n-113 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();\n-114 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();\n-115 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();\n-116 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();\n-117 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();\n-118 }\n-119 }\n-120\n-121 private:\n-122 // Edge orientations\n-123 std::array sign_;\n-124\n-125 // Edge normals\n-126 std::array n_;\n-127 };\n-128}\n-129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\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 _\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:26\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 &ff, 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:55\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+_\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:34\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:42\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 raviartthomas2cube2dlocalinterpolation.hh:35\n-_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\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/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: raviartthomas1cube3dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas3cube2dlocalcoefficients.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-
    raviartthomas1cube3dlocalcoefficients.hh File Reference
    \n+
    raviartthomas3cube2dlocalcoefficients.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::RT1Cube3DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on quadrilaterals. 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,23 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas1cube3dlocalcoefficients.hh File Reference\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 _\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:_\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/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: raviartthomas1cube3dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas3cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,85 +70,85 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas1cube3dlocalcoefficients.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 (C) 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_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_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-
    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-
    \n-
    59}
    \n-
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALCOEFFICIENTS_HH
    \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
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    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,83 +1,83 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMAS3_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_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 _\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+_\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-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_\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 _\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:23\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+_\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 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+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 raviartthomas1cube3dlocalcoefficients.hh:51\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/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: raviartthomas1cube3dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas0prism.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-
    raviartthomas1cube3dlocalinterpolation.hh File Reference
    \n+
    raviartthomas0prism.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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::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,24 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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:_\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:_\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/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: raviartthomas1cube3dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas0prism.hh Source File\n \n \n \n \n \n \n \n@@ -70,158 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube3dlocalinterpolation.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 (C) 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_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-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    23 template<class LB>
    \n-
    \n-\n-
    25 {
    \n-
    26
    \n-
    27 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-
    \n-
    34 RT1Cube3DLocalInterpolation (std::bitset<6> s = 0)
    \n-
    35 {
    \n-
    36 for (size_t i=0; i<6; i++)
    \n-
    37 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    38
    \n-
    39 n_[0] = {-1.0, 0.0, 0.0};
    \n-
    40 n_[1] = { 1.0, 0.0, 0.0};
    \n-
    41 n_[2] = { 0.0, -1.0, 0.0};
    \n-
    42 n_[3] = { 0.0, 1.0, 0.0};
    \n-
    43 n_[4] = { 0.0, 0.0, -1.0};
    \n-
    44 n_[5] = { 0.0, 0.0, 1.0};
    \n-
    45 }
    \n-
    \n-
    46
    \n-
    55 template<class F, class C>
    \n-
    \n-
    56 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    57 {
    \n-
    58 // f gives v*outer normal at a point on the edge!
    \n-
    59 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    60 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    61
    \n-
    62 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    63
    \n-
    64 out.resize(36);
    \n-
    65 fill(out.begin(), out.end(), 0.0);
    \n-
    66
    \n-
    67 const int qOrder = 3;
    \n-
    68 const auto& rule1 = QuadratureRules<Scalar,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    69
    \n-
    70 for (auto&& qp : rule1)
    \n-
    71 {
    \n-
    72 Dune::FieldVector<Scalar,2> qPos = qp.position();
    \n-
    73 typename LB::Traits::DomainType localPos;
    \n-
    74
    \n-
    75 localPos = {0.0, qPos[0], qPos[1]};
    \n-
    76 auto y = f(localPos);
    \n-
    77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_[0];
    \n-
    78 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-
    79 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-
    80 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-
    81
    \n-
    82 localPos = {1.0, qPos[0], qPos[1]};
    \n-
    83 y = f(localPos);
    \n-
    84 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_[1];
    \n-
    85 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-
    86 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-
    87 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-
    88
    \n-
    89 localPos = {qPos[0], 0.0, qPos[1]};
    \n-
    90 y = f(localPos);
    \n-
    91 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_[2];
    \n-
    92 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-
    93 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-
    94 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-
    95
    \n-
    96 localPos = {qPos[0], 1.0, qPos[1]};
    \n-
    97 y = f(localPos);
    \n-
    98 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_[3];
    \n-
    99 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-
    100 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-
    101 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-
    102
    \n-
    103 localPos = {qPos[0], qPos[1], 0.0};
    \n-
    104 y = f(localPos);
    \n-
    105 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_[4];
    \n-
    106 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-
    107 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-
    108 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-
    109
    \n-
    110 localPos = {qPos[0], qPos[1], 1.0};
    \n-
    111 y = f(localPos);
    \n-
    112 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_[5];
    \n-
    113 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-
    114 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-
    115 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-
    116 }
    \n-
    117
    \n-
    118 const auto& rule2 = QuadratureRules<Vector,3>::rule(GeometryTypes::cube(3), qOrder);
    \n-
    119 for (auto&& qp : rule2)
    \n-
    120 {
    \n-
    121 FieldVector<double,3> qPos = qp.position();
    \n-
    122
    \n-
    123 auto y = f(qPos);
    \n-
    124 out[24] += y[0]*qp.weight();
    \n-
    125 out[25] += y[1]*qp.weight();
    \n-
    126 out[26] += y[2]*qp.weight();
    \n-
    127 out[27] += y[0]*qPos[1]*qp.weight();
    \n-
    128 out[28] += y[0]*qPos[2]*qp.weight();
    \n-
    129 out[29] += y[1]*qPos[0]*qp.weight();
    \n-
    130 out[30] += y[1]*qPos[2]*qp.weight();
    \n-
    131 out[31] += y[2]*qPos[0]*qp.weight();
    \n-
    132 out[32] += y[2]*qPos[1]*qp.weight();
    \n-
    133 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();
    \n-
    134 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();
    \n-
    135 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();
    \n-
    136 }
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    139 private:
    \n-
    140 // Facet orientations
    \n-
    141 std::array<typename LB::Traits::RangeFieldType, 6> sign_;
    \n-
    142
    \n-
    143 // Facet normals
    \n-
    144 std::array<typename LB::Traits::DomainType, 6> n_;
    \n-
    145 };
    \n-
    \n-
    146}
    \n-
    147#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH
    \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+
    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::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-
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalinterpolation.hh:25
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube3dlocalinterpolation.hh:56
    \n-
    RT1Cube3DLocalInterpolation(std::bitset< 6 > s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas1cube3dlocalinterpolation.hh:34
    \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+
    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:24
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,180 +1,137 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS0_PRISM_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PRISM_HH\n 7\n-8#include \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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-23 template\n-_\b2_\b4 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-25 {\n-26\n-27 public:\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+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-_\b3_\b4 _\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-35 {\n-36 for (size_t i=0; i<6; i++)\n-37 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-38\n-39 n_[0] = {-1.0, 0.0, 0.0};\n-40 n_[1] = { 1.0, 0.0, 0.0};\n-41 n_[2] = { 0.0, -1.0, 0.0};\n-42 n_[3] = { 0.0, 1.0, 0.0};\n-43 n_[4] = { 0.0, 0.0, -1.0};\n-44 n_[5] = { 0.0, 0.0, 1.0};\n-45 }\n-46\n-55 template\n-_\b5_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-57 {\n-58 // f gives v*outer normal at a point on the edge!\n-59 typedef typename LB::Traits::RangeFieldType Scalar;\n-60 typedef typename LB::Traits::DomainFieldType Vector;\n-61\n-62 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-63\n-64 out.resize(36);\n-65 fill(out.begin(), out.end(), 0.0);\n-66\n-67 const int qOrder = 3;\n-68 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(2),\n-qOrder);\n-69\n-70 for (auto&& qp : rule1)\n-71 {\n-72 Dune::FieldVector qPos = qp.position();\n-73 typename LB::Traits::DomainType localPos;\n-74\n-75 localPos = {0.0, qPos[0], qPos[1]};\n-76 auto y = f(localPos);\n-77 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1] + y[2]*n_[0][2])*qp.weight()*sign_\n-[0];\n-78 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-79 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-80 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-81\n-82 localPos = {1.0, qPos[0], qPos[1]};\n-83 y = f(localPos);\n-84 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1] + y[2]*n_[1][2])*qp.weight()*sign_\n-[1];\n-85 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-86 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-87 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-88\n-89 localPos = {qPos[0], 0.0, qPos[1]};\n-90 y = f(localPos);\n-91 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1] + y[2]*n_[2][2])*qp.weight()*sign_\n-[2];\n-92 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-93 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-94 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-95\n-96 localPos = {qPos[0], 1.0, qPos[1]};\n-97 y = f(localPos);\n-98 out[3] += (y[0]*n_[3][0] + y[1]*n_[3][1] + y[2]*n_[3][2])*qp.weight()*sign_\n-[3];\n-99 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-100 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-101 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-102\n-103 localPos = {qPos[0], qPos[1], 0.0};\n-104 y = f(localPos);\n-105 out[4] += (y[0]*n_[4][0] + y[1]*n_[4][1] + y[2]*n_[4][2])*qp.weight()*sign_\n-[4];\n-106 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-107 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-108 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-109\n-110 localPos = {qPos[0], qPos[1], 1.0};\n-111 y = f(localPos);\n-112 out[5] += (y[0]*n_[5][0] + y[1]*n_[5][1] + y[2]*n_[5][2])*qp.weight()*sign_\n-[5];\n-113 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-114 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-115 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-116 }\n-117\n-118 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(3),\n-qOrder);\n-119 for (auto&& qp : rule2)\n-120 {\n-121 FieldVector qPos = qp.position();\n-122\n-123 auto y = f(qPos);\n-124 out[24] += y[0]*qp.weight();\n-125 out[25] += y[1]*qp.weight();\n-126 out[26] += y[2]*qp.weight();\n-127 out[27] += y[0]*qPos[1]*qp.weight();\n-128 out[28] += y[0]*qPos[2]*qp.weight();\n-129 out[29] += y[1]*qPos[0]*qp.weight();\n-130 out[30] += y[1]*qPos[2]*qp.weight();\n-131 out[31] += y[2]*qPos[0]*qp.weight();\n-132 out[32] += y[2]*qPos[1]*qp.weight();\n-133 out[33] += y[0]*qPos[1]*qPos[2]*qp.weight();\n-134 out[34] += y[1]*qPos[0]*qPos[2]*qp.weight();\n-135 out[35] += y[2]*qPos[0]*qPos[1]*qp.weight();\n-136 }\n-137 }\n-138\n-139 private:\n-140 // Facet orientations\n-141 std::array sign_;\n-142\n-143 // Facet normals\n-144 std::array n_;\n-145 };\n-146}\n-147#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_LOCALINTERPOLATION_HH\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+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::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_\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_\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_\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_\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:25\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 &ff, 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:56\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:34\n-_\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_\b:_\b:_\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: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/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: raviartthomas1cube3dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas1cube3d.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-
    raviartthomas1cube3dlocalbasis.hh File Reference
    \n+
    raviartthomas1cube3d.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::RT1Cube3DLocalBasis< D, R >
     First order Raviart-Thomas 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,25 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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-#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:_\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+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/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: raviartthomas1cube3dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas1cube3d.hh Source File\n \n \n \n \n \n \n \n@@ -70,642 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube3dlocalbasis.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 (C) 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_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_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 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+
    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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.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+
    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-
    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 Raviart-Thomas-1 elements on quadrilaterals.
    Definition raviartthomas1cube3dlocalcoefficients.hh:24
    \n+
    First order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas1cube3dlocalinterpolation.hh:25
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,758 +1,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS1_CUBE3D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE3D_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 \"_\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 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+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 sign3 = -1.0;\n+56 return coefficients;\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+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 _\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:34\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: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:_\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+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_\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:_\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: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/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: raviartthomas4cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: raviartthomas12dlocalcoefficients.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-
    raviartthomas4cube2dlocalcoefficients.hh File Reference
    \n+
    raviartthomas12dlocalcoefficients.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::RT4Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-4 elements on quadrilaterals. 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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas4cube2dlocalcoefficients.hh File Reference\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:_\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:_\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 ===============================================================================\n 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: raviartthomas4cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas12dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,85 +70,82 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas4cube2dlocalcoefficients.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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_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
    23 {
    \n
    24
    \n
    25 public:
    \n
    \n-\n+\n
    28 {
    \n-
    29 for (std::size_t i = 0; i < 4; i++)
    \n+
    29 for (std::size_t i = 0; i < 3; 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+
    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-
    59}
    \n-
    60#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    55}
    \n+
    56#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    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,83 +1,80 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_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_\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+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_\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+_\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 < 4; i++)\n+29 for (std::size_t i = 0; i < 3; 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+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_\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: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\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+_\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 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+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 raviartthomas4cube2dlocalcoefficients.hh:51\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/a00350.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: raviartthomas4cube2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas12dlocalinterpolation.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-
    raviartthomas4cube2dlocalbasis.hh File Reference
    \n+
    raviartthomas12dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <bitset>
    \n-#include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+
    #include <vector>
    \n+#include <dune/geometry/quadraturerules.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

    \n \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::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,26 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas4cube2dlocalbasis.hh File Reference\n-#include \n-#include \n+raviartthomas12dlocalinterpolation.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_\bb_\ba_\bs_\bi_\bs_\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_\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_\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+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/a00350_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00350_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: raviartthomas12dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,814 +70,128 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas4cube2dlocalbasis.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 (C) 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_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_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 <vector>
    \n+
    9
    \n+
    10#include <dune/geometry/quadraturerules.hh>
    \n+\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-
    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+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n+
    27
    \n+
    28 public:
    \n+
    29
    \n+
    \n+
    35 RT12DLocalInterpolation (std::bitset<3> s = 0)
    \n+
    36 {
    \n+
    37 using std::sqrt;
    \n+
    38 for (size_t i=0; i<3; i++)
    \n+
    39 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    40
    \n+
    41 n_[0] = { 0.0, -1.0};
    \n+
    42 n_[1] = {-1.0, 0.0};
    \n+
    43 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n+
    44
    \n+
    45 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],
    \n+
    46 -1.0*n_[1][0] + 0.5*n_[1][1],
    \n+
    47 0.5*n_[2][0] + 0.5*n_[2][1]};
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    58 template<typename F, typename C>
    \n+
    \n+
    59 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    60 {
    \n+
    61 // f gives v*outer normal at a point on the edge!
    \n+
    62 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    63 typedef typename LB::Traits::DomainFieldType Vector;
    \n
    64
    \n-
    65 auto const& x = in[0], y = in[1];
    \n+
    65 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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+
    67 out.resize(8);
    \n+
    68 fill(out.begin(), out.end(), 0.0);
    \n+
    69
    \n+
    70 const int qOrder1 = 4;
    \n+
    71 const auto& rule1 = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder1);
    \n+
    72
    \n+
    73 for (auto&& qp : rule1)
    \n+
    74 {
    \n+
    75 Scalar qPos = qp.position();
    \n+
    76 typename LB::Traits::DomainType localPos;
    \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+
    78 localPos = {qPos, 0.0};
    \n+
    79 auto y = f(localPos);
    \n+
    80 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];
    \n+
    81 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_[0];
    \n+
    82
    \n+
    83 localPos = {0.0, qPos};
    \n+
    84 y = f(localPos);
    \n+
    85 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];
    \n+
    86 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_[1];
    \n+
    87
    \n+
    88 localPos = {1.0 - qPos, qPos};
    \n+
    89 y = f(localPos);
    \n+
    90 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];
    \n+
    91 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_[2];
    \n+
    92 }
    \n+
    93
    \n+
    94 const int qOrder2 = 8;
    \n+
    95 const auto& rule2 = Dune::QuadratureRules<Vector,2>::rule(Dune::GeometryTypes::simplex(2), qOrder2);
    \n+
    96
    \n+
    97 for (auto&& qp : rule2)
    \n+
    98 {
    \n+
    99 auto qPos = qp.position();
    \n+
    100
    \n+
    101 auto y = f(qPos);
    \n+
    102 out[6] += y[0]*qp.weight();
    \n+
    103 out[7] += y[1]*qp.weight();
    \n+
    104 }
    \n+
    105 }
    \n+
    \n+
    106
    \n+
    107 private:
    \n+
    108 // Edge orientations
    \n+
    109 std::array<typename LB::Traits::RangeFieldType, 3> sign_;
    \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+
    111 // Edge normals
    \n+
    112 std::array<typename LB::Traits::DomainType, 3> n_;
    \n+
    113
    \n+
    114 std::array<typename LB::Traits::RangeFieldType, 3> c_;
    \n+
    115 };
    \n
    \n-
    795}
    \n-
    796
    \n-
    797#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALBASIS_HH
    \n+
    116}
    \n+
    117#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas12dlocalinterpolation.hh:26
    \n+
    RT12DLocalInterpolation(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12dlocalinterpolation.hh:35
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas12dlocalinterpolation.hh:59
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,826 +1,129 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_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\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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-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+24 template\n+_\b2_\b5 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+26 {\n+27\n+28 public:\n+29\n+_\b3_\b5 _\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+36 {\n+37 using std::sqrt;\n+38 for (size_t i=0; i<3; i++)\n+39 sign_[i] = (s[i]) ? -1.0 : 1.0;\n+40\n+41 n_[0] = { 0.0, -1.0};\n+42 n_[1] = {-1.0, 0.0};\n+43 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};\n+44\n+45 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],\n+46 -1.0*n_[1][0] + 0.5*n_[1][1],\n+47 0.5*n_[2][0] + 0.5*n_[2][1]};\n+48 }\n+49\n+58 template\n+_\b5_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+60 {\n+61 // f gives v*outer normal at a point on the edge!\n+62 typedef typename LB::Traits::RangeFieldType Scalar;\n+63 typedef typename LB::Traits::DomainFieldType Vector;\n 64\n-65 auto const& x = in[0], y = in[1];\n+65 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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+67 out.resize(8);\n+68 fill(out.begin(), out.end(), 0.0);\n+69\n+70 const int qOrder1 = 4;\n+71 const auto& rule1 = Dune::QuadratureRules::rule(Dune::\n+GeometryTypes::simplex(1), qOrder1);\n+72\n+73 for (auto&& qp : rule1)\n+74 {\n+75 Scalar qPos = qp.position();\n+76 typename LB::Traits::DomainType localPos;\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+78 localPos = {qPos, 0.0};\n+79 auto y = f(localPos);\n+80 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];\n+81 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n+[0];\n+82\n+83 localPos = {0.0, qPos};\n+84 y = f(localPos);\n+85 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];\n+86 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_\n+[1];\n+87\n+88 localPos = {1.0 - qPos, qPos};\n+89 y = f(localPos);\n+90 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];\n+91 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n+[2];\n+92 }\n+93\n+94 const int qOrder2 = 8;\n+95 const auto& rule2 = Dune::QuadratureRules::rule(Dune::\n+GeometryTypes::simplex(2), qOrder2);\n+96\n+97 for (auto&& qp : rule2)\n+98 {\n+99 auto qPos = qp.position();\n+100\n+101 auto y = f(qPos);\n+102 out[6] += y[0]*qp.weight();\n+103 out[7] += y[1]*qp.weight();\n+104 }\n+105 }\n+106\n+107 private:\n+108 // Edge orientations\n+109 std::array sign_;\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-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 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+111 // Edge normals\n+112 std::array n_;\n+113\n+114 std::array c_;\n+115 };\n+116}\n+117#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:_\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:34\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:42\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:_\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:26\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:35\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 &ff, 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:59\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/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: raviartthomas4cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas12dlocalbasis.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-
    raviartthomas4cube2dlocalinterpolation.hh File Reference
    \n+
    raviartthomas12dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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::RT4Cube2DLocalInterpolation< LB >
     Second order Raviart-Thomas shape functions on the reference triangle. 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.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas4cube2dlocalinterpolation.hh File Reference\n+raviartthomas12dlocalbasis.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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_\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+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/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: raviartthomas4cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas12dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,177 +70,215 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas4cube2dlocalinterpolation.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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\n+
    8#include <numeric>
    \n+
    9#include <vector>
    \n+
    10
    \n+
    11#include <dune/common/fmatrix.hh>
    \n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    24 template<class LB>
    \n-
    \n-\n-
    26 {
    \n-
    27
    \n-
    28 public:
    \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-
    \n-
    35 RT4Cube2DLocalInterpolation (unsigned int s = 0)
    \n-
    36 {
    \n-
    37 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    38 if (s & 1)
    \n-
    39 {
    \n-
    40 sign0 *= -1.0;
    \n-
    41 }
    \n-
    42 if (s & 2)
    \n-
    43 {
    \n-
    44 sign1 *= -1.0;
    \n-
    45 }
    \n-
    46 if (s & 4)
    \n-
    47 {
    \n-
    48 sign2 *= -1.0;
    \n-
    49 }
    \n-
    50 if (s & 8)
    \n-
    51 {
    \n-
    52 sign3 *= -1.0;
    \n-
    53 }
    \n-
    54
    \n-
    55 n0[0] = -1.0;
    \n-
    56 n0[1] = 0.0;
    \n-
    57 n1[0] = 1.0;
    \n-
    58 n1[1] = 0.0;
    \n-
    59 n2[0] = 0.0;
    \n-
    60 n2[1] = -1.0;
    \n-
    61 n3[0] = 0.0;
    \n-
    62 n3[1] = 1.0;
    \n-
    63 }
    \n-
    \n-
    64
    \n-
    73 template<typename F, typename C>
    \n-
    \n-
    74 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    75 {
    \n-
    76 // f gives v*outer normal at a point on the edge!
    \n-
    77 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    78 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    79
    \n-
    80 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    81
    \n-
    82 out.resize(60);
    \n-
    83 fill(out.begin(), out.end(), 0.0);
    \n-
    84
    \n-
    85 const int qOrder = 12;
    \n-
    86 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    87
    \n-
    88 for (typename QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n-
    89 {
    \n-
    90 Scalar qPos = it->position();
    \n-
    91 typename LB::Traits::DomainType localPos;
    \n-
    92
    \n-
    93 localPos[0] = 0.0;
    \n-
    94 localPos[1] = qPos;
    \n-
    95 auto y = f(localPos);
    \n-
    96 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n-
    97 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    98 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0;
    \n-
    99 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-
    100 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-
    101
    \n-
    102 localPos[0] = 1.0;
    \n-
    103 localPos[1] = qPos;
    \n-
    104 y = f(localPos);
    \n-
    105 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n-
    106 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    107 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1;
    \n-
    108 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-
    109 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-
    110
    \n-
    111 localPos[0] = qPos;
    \n-
    112 localPos[1] = 0.0;
    \n-
    113 y = f(localPos);
    \n-
    114 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n-
    115 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    116 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2;
    \n-
    117 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-
    118 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+
    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 localPos[0] = qPos;
    \n-
    121 localPos[1] = 1.0;
    \n-
    122 y = f(localPos);
    \n-
    123 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n-
    124 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    125 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign3;
    \n-
    126 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-
    127 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-
    128 }
    \n-
    129
    \n-
    130 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    131
    \n-
    132 for (typename QuadratureRule<Vector,2>::const_iterator it = rule2.begin();
    \n-
    133 it != rule2.end(); ++it)
    \n-
    134 {
    \n-
    135 FieldVector<double,2> qPos = it->position();
    \n-
    136
    \n-
    137 auto y = f(qPos);
    \n-
    138 std::vector<std::vector<double> > l(2,std::vector<double> (5));
    \n-
    139 l[0][0]=1.0;
    \n-
    140 l[1][0]=1.0;
    \n-
    141 l[0][1]=2.0*qPos[0]-1.0;
    \n-
    142 l[1][1]=2.0*qPos[1]-1.0;
    \n-
    143 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;
    \n-
    144 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;
    \n-
    145 l[0][3]=20.0*qPos[0]*qPos[0]*qPos[0] - 30.0*qPos[0]*qPos[0] + 12.0*qPos[0] - 1.0;
    \n-
    146 l[1][3]=20.0*qPos[1]*qPos[1]*qPos[1] - 30.0*qPos[1]*qPos[1] + 12.0*qPos[1] - 1.0;
    \n-
    147 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-
    148 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-
    149
    \n-
    150 for (int i=0;i<4;i++)
    \n-
    151 for (int j=0;j<5;j++)
    \n-
    152 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();
    \n-
    153
    \n-
    154 for (int i=0;i<5;i++)
    \n-
    155 for (int j=0;j<4;j++)
    \n-
    156 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();
    \n-
    157 }
    \n-
    158 }
    \n-
    \n-
    159
    \n-
    160 private:
    \n-
    161 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n-
    162 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n-
    163 };
    \n-
    \n-
    164}
    \n-
    165
    \n-
    166#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH
    \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-
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas4cube2dlocalinterpolation.hh:26
    \n-
    RT4Cube2DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas4cube2dlocalinterpolation.hh:35
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas4cube2dlocalinterpolation.hh:74
    \n-\n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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,192 +1,228 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALBASIS_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_\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-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-24 template\n-_\b2_\b5 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-26 {\n-27\n-28 public:\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_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+28 {\n 29\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 (unsigned int s = 0)\n-36 {\n-37 sign0 = sign1 = sign2 = sign3 = 1.0;\n-38 if (s & 1)\n-39 {\n-40 sign0 *= -1.0;\n-41 }\n-42 if (s & 2)\n-43 {\n-44 sign1 *= -1.0;\n-45 }\n-46 if (s & 4)\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 sign2 *= -1.0;\n+48 return 8;\n 49 }\n-50 if (s & 8)\n-51 {\n-52 sign3 *= -1.0;\n-53 }\n-54\n-55 n0[0] = -1.0;\n-56 n0[1] = 0.0;\n-57 n1[0] = 1.0;\n-58 n1[1] = 0.0;\n-59 n2[0] = 0.0;\n-60 n2[1] = -1.0;\n-61 n3[0] = 0.0;\n-62 n3[1] = 1.0;\n-63 }\n-64\n-73 template\n-_\b7_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-75 {\n-76 // f gives v*outer normal at a point on the edge!\n-77 typedef typename LB::Traits::RangeFieldType Scalar;\n-78 typedef typename LB::Traits::DomainFieldType Vector;\n-79\n-80 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-81\n-82 out.resize(60);\n-83 fill(out.begin(), out.end(), 0.0);\n-84\n-85 const int qOrder = 12;\n-86 const QuadratureRule& rule = QuadratureRules::rule\n-(GeometryTypes::cube(1), qOrder);\n-87\n-88 for (typename QuadratureRule::const_iterator it=rule.begin();\n-it!=rule.end(); ++it)\n-89 {\n-90 Scalar qPos = it->position();\n-91 typename LB::Traits::DomainType localPos;\n-92\n-93 localPos[0] = 0.0;\n-94 localPos[1] = qPos;\n-95 auto y = f(localPos);\n-96 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n-97 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n-98 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign0;\n-99 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-100 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-101\n-102 localPos[0] = 1.0;\n-103 localPos[1] = qPos;\n-104 y = f(localPos);\n-105 out[5] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n-106 out[6] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n-107 out[7] += (y[0]*n1[0] + y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign1;\n-108 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-109 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-110\n-111 localPos[0] = qPos;\n-112 localPos[1] = 0.0;\n-113 y = f(localPos);\n-114 out[10] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n-115 out[11] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n-116 out[12] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign2;\n-117 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-118 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+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 localPos[0] = qPos;\n-121 localPos[1] = 1.0;\n-122 y = f(localPos);\n-123 out[15] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n-124 out[16] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n-125 out[17] += (y[0]*n3[0] + y[1]*n3[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it-\n->weight()*sign3;\n-126 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-127 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-128 }\n-129\n-130 const QuadratureRule& rule2 = QuadratureRules::rule\n-(GeometryTypes::cube(2), qOrder);\n-131\n-132 for (typename QuadratureRule::const_iterator it = rule2.begin();\n-133 it != rule2.end(); ++it)\n-134 {\n-135 FieldVector qPos = it->position();\n-136\n-137 auto y = f(qPos);\n-138 std::vector > l(2,std::vector (5));\n-139 l[0][0]=1.0;\n-140 l[1][0]=1.0;\n-141 l[0][1]=2.0*qPos[0]-1.0;\n-142 l[1][1]=2.0*qPos[1]-1.0;\n-143 l[0][2]=6.0*qPos[0]*qPos[0]-6.0*qPos[0]+1.0;\n-144 l[1][2]=6.0*qPos[1]*qPos[1]-6.0*qPos[1]+1.0;\n-145 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-146 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-147 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-148 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-149\n-150 for (int i=0;i<4;i++)\n-151 for (int j=0;j<5;j++)\n-152 out[20+i*5+j] +=y[0]*l[0][i]*l[1][j]*it->weight();\n-153\n-154 for (int i=0;i<5;i++)\n-155 for (int j=0;j<4;j++)\n-156 out[40+i*4+j] +=y[1]*l[0][i]*l[1][j]*it->weight();\n-157 }\n-158 }\n-159\n-160 private:\n-161 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n-162 typename LB::Traits::DomainType n0, n1, n2, n3;\n-163 };\n-164}\n-165\n-166#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS3_CUBE2D_LOCALINTERPOLATION_HH\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:_\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:26\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:35\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 &ff, 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:74\n-_\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_\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:34\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:42\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/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: raviartthomas0pyramidlocalcoefficients.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-
    raviartthomas0pyramidlocalcoefficients.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::RT0PyramidLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on pyramids. 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,23 +1,39 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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_\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/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: raviartthomas0pyramidlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomassimplexinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,75 +70,546 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0pyramidlocalcoefficients.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 (C) 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_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(int i=0; i< size(); i++)
    \n-
    31 li[i] = LocalKey(i,1,0);
    \n-
    32 }
    \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-
    \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+
    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+
    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+
    \n+
    226 auto interpolate ( const Function &function, Vector &coefficients ) const
    \n+
    227 -> std::enable_if_t< std::is_same< decltype(std::declval<Vector>().resize(1) ),void >::value,void>
    \n+
    228 {
    \n+
    229 coefficients.resize(size());
    \n+
    230 typename Base::template Helper<Function,Vector,true> func( function,coefficients );
    \n+
    231 interpolate(func);
    \n+
    232 }
    \n+
    \n+
    233
    \n+
    234 template< class Basis, class Matrix >
    \n+
    \n+
    235 auto interpolate ( const Basis &basis, Matrix &matrix ) const
    \n+
    236 -> std::enable_if_t< std::is_same<
    \n+
    237 decltype(std::declval<Matrix>().rowPtr(0)), typename Matrix::Field* >::value,void>
    \n+
    238 {
    \n+
    239 matrix.resize( size(), basis.size() );
    \n+
    240 typename Base::template Helper<Basis,Matrix,false> func( basis,matrix );
    \n+
    241 interpolate(func);
    \n+
    242 }
    \n+
    \n+
    243
    \n+
    \n+
    244 std::size_t order() const
    \n+
    245 {
    \n+
    246 return order_;
    \n+
    247 }
    \n+
    \n+
    \n+
    248 std::size_t size() const
    \n+
    249 {
    \n+
    250 return size_;
    \n+
    251 }
    \n+
    \n+
    252 template <GeometryType::Id geometryId>
    \n+
    \n+
    253 void build( std::size_t order )
    \n+
    254 {
    \n+
    255 size_ = 0;
    \n+
    256 order_ = order;
    \n+
    257 builder_.template build<geometryId>(order_);
    \n+
    258 if (builder_.testBasis())
    \n+
    259 size_ += dimension*builder_.testBasis()->size();
    \n+
    260 for ( unsigned int f=0; f<builder_.faceSize(); ++f )
    \n+
    261 if (builder_.testFaceBasis(f))
    \n+
    262 size_ += builder_.testFaceBasis(f)->size();
    \n+
    263 }
    \n+
    \n+
    264
    \n+
    \n+
    265 void setLocalKeys(std::vector< LocalKey > &keys) const
    \n+
    266 {
    \n+
    267 keys.resize(size());
    \n+
    268 unsigned int row = 0;
    \n+
    269 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n+
    270 {
    \n+
    271 if (builder_.faceSize())
    \n+
    272 for (unsigned int i=0; i<builder_.testFaceBasis(f)->size(); ++i,++row)
    \n+
    273 keys[row] = LocalKey(f,1,i);
    \n+
    274 }
    \n+
    275 if (builder_.testBasis())
    \n+
    276 for (unsigned int i=0; i<builder_.testBasis()->size()*dimension; ++i,++row)
    \n+
    277 keys[row] = LocalKey(0,0,i);
    \n+
    278 assert( row == size() );
    \n+
    279 }
    \n+
    \n+
    280
    \n+
    281 protected:
    \n+
    282 template< class Func, class Container, bool type >
    \n+
    \n+
    283 void interpolate ( typename Base::template Helper<Func,Container,type> &func ) const
    \n+
    284 {
    \n+
    285 const Dune::GeometryType geoType = builder_.type();
    \n+
    286
    \n+
    287 std::vector< Field > testBasisVal;
    \n+
    288
    \n+
    289 for (unsigned int i=0; i<size(); ++i)
    \n+
    290 for (unsigned int j=0; j<func.size(); ++j)
    \n+
    291 func.set(i,j,0);
    \n+
    292
    \n+
    293 unsigned int row = 0;
    \n+
    294
    \n+
    295 // boundary dofs:
    \n+
    296 typedef Dune::QuadratureRule<Field, dimension-1> FaceQuadrature;
    \n+
    297 typedef Dune::QuadratureRules<Field, dimension-1> FaceQuadratureRules;
    \n+
    298
    \n+
    299 const auto &refElement = Dune::ReferenceElements< Field, dimension >::general( geoType );
    \n+
    300
    \n+
    301 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n+
    302 {
    \n+
    303 if (!builder_.testFaceBasis(f))
    \n+
    304 continue;
    \n+
    305 testBasisVal.resize(builder_.testFaceBasis(f)->size());
    \n+
    306
    \n+
    307 const auto &geometry = refElement.template geometry< 1 >( f );
    \n+
    308 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );
    \n+
    309 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n+
    310
    \n+
    311 const unsigned int quadratureSize = faceQuad.size();
    \n+
    312 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n+
    313 {
    \n+
    314 if (dimension>1)
    \n+
    315 builder_.testFaceBasis(f)->template evaluate<0>(faceQuad[qi].position(),testBasisVal);
    \n+
    316 else
    \n+
    317 testBasisVal[0] = 1.;
    \n+
    318 fillBnd( row, testBasisVal,
    \n+
    319 func.evaluate( geometry.global( faceQuad[qi].position() ) ),
    \n+
    320 builder_.normal(f), faceQuad[qi].weight(),
    \n+
    321 func);
    \n+
    322 }
    \n+
    323
    \n+
    324 row += builder_.testFaceBasis(f)->size();
    \n+
    325 }
    \n+
    326 // element dofs
    \n+
    327 if (builder_.testBasis())
    \n+
    328 {
    \n+
    329 testBasisVal.resize(builder_.testBasis()->size());
    \n+
    330
    \n+
    331 typedef Dune::QuadratureRule<Field, dimension> Quadrature;
    \n+
    332 typedef Dune::QuadratureRules<Field, dimension> QuadratureRules;
    \n+
    333 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );
    \n+
    334
    \n+
    335 const unsigned int quadratureSize = elemQuad.size();
    \n+
    336 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n+
    337 {
    \n+
    338 builder_.testBasis()->template evaluate<0>(elemQuad[qi].position(),testBasisVal);
    \n+
    339 fillInterior( row, testBasisVal,
    \n+
    340 func.evaluate(elemQuad[qi].position()),
    \n+
    341 elemQuad[qi].weight(),
    \n+
    342 func );
    \n+
    343 }
    \n+
    344
    \n+
    345 row += builder_.testBasis()->size()*dimension;
    \n+
    346 }
    \n+
    347 assert(row==size());
    \n+
    348 }
    \n+
    \n+
    349
    \n+
    350 private:
    \n+
    360 template <class MVal, class RTVal,class Matrix>
    \n+
    361 void fillBnd (unsigned int startRow,
    \n+
    362 const MVal &mVal,
    \n+
    363 const RTVal &rtVal,
    \n+
    364 const FieldVector<Field,dimension> &normal,
    \n+
    365 const Field &weight,
    \n+
    366 Matrix &matrix) const
    \n+
    367 {
    \n+
    368 const unsigned int endRow = startRow+mVal.size();
    \n+
    369 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n+
    370 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n+
    371 {
    \n+
    372 Field cFactor = (*rtiter)*normal;
    \n+
    373 typename MVal::const_iterator miter = mVal.begin();
    \n+
    374 for (unsigned int row = startRow;
    \n+
    375 row!=endRow; ++miter, ++row )
    \n+
    376 {
    \n+
    377 matrix.add(row,col, (weight*cFactor)*(*miter) );
    \n+
    378 }
    \n+
    379 assert( miter == mVal.end() );
    \n+
    380 }
    \n+
    381 }
    \n+
    390 template <class MVal, class RTVal,class Matrix>
    \n+
    391 void fillInterior (unsigned int startRow,
    \n+
    392 const MVal &mVal,
    \n+
    393 const RTVal &rtVal,
    \n+
    394 Field weight,
    \n+
    395 Matrix &matrix) const
    \n+
    396 {
    \n+
    397 const unsigned int endRow = startRow+mVal.size()*dimension;
    \n+
    398 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n+
    399 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n+
    400 {
    \n+
    401 typename MVal::const_iterator miter = mVal.begin();
    \n+
    402 for (unsigned int row = startRow;
    \n+
    403 row!=endRow; ++miter,row+=dimension )
    \n+
    404 {
    \n+
    405 for (unsigned int i=0; i<dimension; ++i)
    \n+
    406 {
    \n+
    407 matrix.add(row+i,col, (weight*(*miter))*(*rtiter)[i] );
    \n+
    408 }
    \n+
    409 }
    \n+
    410 assert( miter == mVal.end() );
    \n+
    411 }
    \n+
    412 }
    \n+
    413
    \n+
    414 Builder builder_;
    \n+
    415 std::size_t order_;
    \n+
    416 std::size_t size_;
    \n+
    417 };
    \n+
    \n+
    418
    \n+
    419 template < unsigned int dim, class Field >
    \n+
    \n+\n+
    421 {
    \n+\n+\n+
    424 typedef std::size_t Key;
    \n+
    425 typedef typename std::remove_const<Object>::type NonConstObject;
    \n+
    426
    \n+
    427 template <GeometryType::Id geometryId>
    \n+
    \n+
    428 static Object *create( const Key &key )
    \n+
    429 {
    \n+
    430 if ( !supports<geometryId>(key) )
    \n+
    431 return 0;
    \n+
    432 NonConstObject *interpol = new NonConstObject();
    \n+
    433 interpol->template build<geometryId>(key);
    \n+
    434 return interpol;
    \n+
    435 }
    \n+
    \n+
    436 template< GeometryType::Id geometryId >
    \n+
    \n+
    437 static bool supports ( const Key &key )
    \n+
    438 {
    \n+
    439 return GeometryType(geometryId).isSimplex();
    \n+
    440 }
    \n+
    \n+
    441 static void release( Object *object ) { delete object; }
    \n+
    442 };
    \n+
    \n+
    443
    \n+
    444} // namespace Dune
    \n+
    445
    \n+
    446#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    Definition nedelecsimplexinterpolation.hh:38
    \n+
    LocalCoefficientsContainer(const Setter &setter)
    Definition nedelecsimplexinterpolation.hh:43
    \n+
    const LocalKey & localKey(const unsigned int i) const
    Definition raviartthomassimplexinterpolation.hh:48
    \n+
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:54
    \n+
    Definition orthonormalbasis.hh:20
    \n+
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n+
    Definition raviartthomassimplexinterpolation.hh:421
    \n+
    std::remove_const< Object >::type NonConstObject
    Definition raviartthomassimplexinterpolation.hh:425
    \n+
    static void release(Object *object)
    Definition raviartthomassimplexinterpolation.hh:441
    \n+
    static bool supports(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:437
    \n+
    static Object * create(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:428
    \n+
    RTL2InterpolationBuilder< dim, Field > Builder
    Definition raviartthomassimplexinterpolation.hh:422
    \n+
    const RaviartThomasL2Interpolation< dim, Field > Object
    Definition raviartthomassimplexinterpolation.hh:423
    \n+
    std::size_t Key
    Definition raviartthomassimplexinterpolation.hh:424
    \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+
    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+
    const Normal & normal(unsigned int f) const
    Definition raviartthomassimplexinterpolation.hh:147
    \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:244
    \n+
    RaviartThomasL2Interpolation()
    Definition raviartthomassimplexinterpolation.hh:220
    \n+
    void interpolate(typename Base::template Helper< Func, Container, type > &func) const
    Definition raviartthomassimplexinterpolation.hh:283
    \n+
    auto interpolate(const Basis &basis, Matrix &matrix) const -> std::enable_if_t< std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::Field * >::value, void >
    Definition raviartthomassimplexinterpolation.hh:235
    \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:253
    \n+
    auto interpolate(const Function &function, Vector &coefficients) const -> std::enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void >::value, void >
    Definition raviartthomassimplexinterpolation.hh:226
    \n+
    std::size_t size() const
    Definition raviartthomassimplexinterpolation.hh:248
    \n+
    void setLocalKeys(std::vector< LocalKey > &keys) const
    Definition raviartthomassimplexinterpolation.hh:265
    \n+
    Definition interpolationhelper.hh:22
    \n+
    Definition interpolationhelper.hh:24
    \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,73 +1,622 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\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 _\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+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 _\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(int 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+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-_\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+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+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+_\b2_\b2_\b6 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, Vector &coefficients ) const\n+227 -> std::enable_if_t< std::is_same< decltype(std::declval().resize\n+(1) ),void >::value,void>\n+228 {\n+229 coefficients.resize(_\bs_\bi_\bz_\be());\n+230 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+231 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n+232 }\n+233\n+234 template< class Basis, class Matrix >\n+_\b2_\b3_\b5 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &matrix ) const\n+236 -> std::enable_if_t< std::is_same<\n+237 decltype(std::declval().rowPtr(0)), typename Matrix::Field* >::\n+value,void>\n+238 {\n+239 matrix.resize( _\bs_\bi_\bz_\be(), basis.size() );\n+240 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+241 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n+242 }\n+243\n+_\b2_\b4_\b4 std::size_t _\bo_\br_\bd_\be_\br() const\n+245 {\n+246 return order_;\n+247 }\n+_\b2_\b4_\b8 std::size_t _\bs_\bi_\bz_\be() const\n+249 {\n+250 return size_;\n+251 }\n+252 template \n+_\b2_\b5_\b3 void _\bb_\bu_\bi_\bl_\bd( std::size_t _\bo_\br_\bd_\be_\br )\n+254 {\n+255 size_ = 0;\n+256 order_ = _\bo_\br_\bd_\be_\br;\n+257 builder_.template build(order_);\n+258 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+259 size_ += dimension*builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be();\n+260 for ( unsigned int f=0; f_\bs_\bi_\bz_\be();\n+263 }\n+264\n+_\b2_\b6_\b5 void _\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs(std::vector< LocalKey > &keys) const\n+266 {\n+267 keys.resize(_\bs_\bi_\bz_\be());\n+268 unsigned int row = 0;\n+269 for (unsigned int f=0; f_\bs_\bi_\bz_\be(); ++i,++row)\n+273 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(f,1,i);\n+274 }\n+275 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+276 for (unsigned int i=0; i_\bs_\bi_\bz_\be()*dimension; ++i,++row)\n+277 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n+278 assert( row == _\bs_\bi_\bz_\be() );\n+279 }\n+280\n+281 protected:\n+282 template< class Func, class Container, bool type >\n+_\b2_\b8_\b3 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+284 {\n+285 const Dune::GeometryType geoType = builder_._\bt_\by_\bp_\be();\n+286\n+287 std::vector< Field > testBasisVal;\n+288\n+289 for (unsigned int i=0; i<_\bs_\bi_\bz_\be(); ++i)\n+290 for (unsigned int j=0; j FaceQuadrature;\n+297 typedef Dune::QuadratureRules<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadratureRules;\n+298\n+299 const auto &refElement = Dune::ReferenceElements< Field, dimension >::\n+general( geoType );\n+300\n+301 for (unsigned int f=0; f_\bs_\bi_\bz_\be());\n+306\n+307 const auto &geometry = refElement.template geometry< 1 >( f );\n+308 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );\n+309 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType,\n+2*order_+2 );\n+310\n+311 const unsigned int quadratureSize = faceQuad.size();\n+312 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n+313 {\n+314 if (dimension>1)\n+315 builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->template evaluate<0>(faceQuad[qi].position\n+(),testBasisVal);\n+316 else\n+317 testBasisVal[0] = 1.;\n+318 fillBnd( row, testBasisVal,\n+319 func.evaluate( geometry.global( faceQuad[qi].position() ) ),\n+320 builder_._\bn_\bo_\br_\bm_\ba_\bl(f), faceQuad[qi].weight(),\n+321 func);\n+322 }\n+323\n+324 row += builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be();\n+325 }\n+326 // element dofs\n+327 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n+328 {\n+329 testBasisVal.resize(builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be());\n+330\n+331 typedef Dune::QuadratureRule Quadrature;\n+332 typedef Dune::QuadratureRules QuadratureRules;\n+333 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );\n+334\n+335 const unsigned int quadratureSize = elemQuad.size();\n+336 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n+337 {\n+338 builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->template evaluate<0>(elemQuad[qi].position\n+(),testBasisVal);\n+339 fillInterior( row, testBasisVal,\n+340 func.evaluate(elemQuad[qi].position()),\n+341 elemQuad[qi].weight(),\n+342 func );\n+343 }\n+344\n+345 row += builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension;\n+346 }\n+347 assert(row==_\bs_\bi_\bz_\be());\n+348 }\n+349\n+350 private:\n+360 template \n+361 void fillBnd (unsigned int startRow,\n+362 const MVal &mVal,\n+363 const RTVal &rtVal,\n+364 const FieldVector &normal,\n+365 const _\bF_\bi_\be_\bl_\bd &weight,\n+366 Matrix &matrix) const\n+367 {\n+368 const unsigned int endRow = startRow+mVal.size();\n+369 typename RTVal::const_iterator rtiter = rtVal.begin();\n+370 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n+371 {\n+372 _\bF_\bi_\be_\bl_\bd cFactor = (*rtiter)*normal;\n+373 typename MVal::const_iterator miter = mVal.begin();\n+374 for (unsigned int row = startRow;\n+375 row!=endRow; ++miter, ++row )\n+376 {\n+377 matrix.add(row,col, (weight*cFactor)*(*miter) );\n+378 }\n+379 assert( miter == mVal.end() );\n+380 }\n+381 }\n+390 template \n+391 void fillInterior (unsigned int startRow,\n+392 const MVal &mVal,\n+393 const RTVal &rtVal,\n+394 _\bF_\bi_\be_\bl_\bd weight,\n+395 Matrix &matrix) const\n+396 {\n+397 const unsigned int endRow = startRow+mVal.size()*dimension;\n+398 typename RTVal::const_iterator rtiter = rtVal.begin();\n+399 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n+400 {\n+401 typename MVal::const_iterator miter = mVal.begin();\n+402 for (unsigned int row = startRow;\n+403 row!=endRow; ++miter,row+=dimension )\n+404 {\n+405 for (unsigned int i=0; i\n+_\b4_\b2_\b0 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+421 {\n+_\b4_\b2_\b2 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_\b3 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_\b4 typedef std::size_t _\bK_\be_\by;\n+_\b4_\b2_\b5 typedef typename std::remove_const::type _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt;\n+426\n+427 template \n+_\b4_\b2_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n+429 {\n+430 if ( !supports(key) )\n+431 return 0;\n+432 _\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+433 interpol->template build(key);\n+434 return interpol;\n+435 }\n+436 template< GeometryType::Id geometryId >\n+_\b4_\b3_\b7 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n+438 {\n+439 return GeometryType(geometryId).isSimplex();\n+440 }\n+_\b4_\b4_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n+442 };\n+443\n+444} // namespace Dune\n+445\n+446#endif // #ifndef\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH\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+_\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 _\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:23\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+_\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:38\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:43\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-number of coefficients\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0pyramidlocalcoefficients.hh:35\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:54\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:421\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: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:_\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:441\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:437\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:428\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:422\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: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:_\bK_\be_\by\n+std::size_t Key\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_\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:_\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:_\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:_\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:244\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:283\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+auto interpolate(const Basis &basis, Matrix &matrix) const -> std::enable_if_t<\n+std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::\n+Field * >::value, void >\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:235\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:253\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+auto interpolate(const Function &function, Vector &coefficients) const -> std::\n+enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void\n+>::value, void >\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:226\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:248\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:265\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:22\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:24\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/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: raviartthomas0pyramidlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomassimplexprebasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,35 +65,38 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0pyramidlocalbasis.hh File Reference
    \n+
    raviartthomassimplexprebasis.hh File Reference
    \n
    \n
    \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::RT0PyramidLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference pyramid. 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,25 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas0pyramidlocalbasis.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+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:_\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+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/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: raviartthomas0pyramidlocalbasis.hh Source File\n+dune-localfunctions: raviartthomassimplexprebasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,148 +70,283 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0pyramidlocalbasis.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 (C) 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_RAVIARTTHOMASPREBASIS_HH
    \n+
    6#define DUNE_RAVIARTTHOMASPREBASIS_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n+
    8#include <fstream>
    \n+
    9#include <utility>
    \n
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n+
    11#include <dune/geometry/type.hh>
    \n
    12
    \n-
    13#include "../../common/localbasis.hh"
    \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 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-
    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+
    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+
    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 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+
    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 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+
    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
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    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:37
    \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,159 +1,329 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMASPREBASIS_HH\n+6#define DUNE_RAVIARTTHOMASPREBASIS_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\n-13#include \"../../common/localbasis.hh\"\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-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& out) const\n-89 {\n-90 out.resize(5);\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 _\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 /*\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 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+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 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+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 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+_\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 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+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:37\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/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: raviartthomas0pyramidlocalinterpolation.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-
    raviartthomas0pyramidlocalinterpolation.hh File Reference
    \n+
    raviartthomassimplexbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/localfunctions/common/localinterpolation.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::RT0PyramidLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference hexahedron. 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.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas0pyramidlocalinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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:_\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+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/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: raviartthomas0pyramidlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomassimplexbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,102 +70,72 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0pyramidlocalinterpolation.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 (C) 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_RAVIARTTHOMASBASIS_HH
    \n+
    6#define DUNE_RAVIARTTHOMASBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-\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 RT0PyramidLocalInterpolation (std::bitset<5> s = 0)
    \n-
    34 {
    \n-
    35 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    36
    \n-
    37 for (size_t i=0; i<5; i++)
    \n-
    38 sign[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    39
    \n-
    40 Scalar r = 1/std::sqrt(2);
    \n-
    41
    \n-
    42 n[0] = { 0.0, 0.0, -1.0};
    \n-
    43 n[1] = {-1.0, 0.0, 0.0};
    \n-
    44 n[2] = { r, 0.0, r};
    \n-
    45 n[3] = { 0.0, -1.0, 0.0};
    \n-
    46 n[4] = { 0.0, r, r};
    \n-
    47
    \n-
    48 c[0] = 1.0;
    \n-
    49 c[1] = 1/2.0;
    \n-
    50 c[2] = 1/2.0 * std::sqrt(2);
    \n-
    51 c[3] = 1/2.0;
    \n-
    52 c[4] = 1/2.0 * std::sqrt(2);
    \n-
    53
    \n-
    54 m[0] = { 0.5, 0.5, 0.0};
    \n-
    55 m[1] = { 0.0, 1/3.0, 1/3.0};
    \n-
    56 m[2] = { 2/3.0, 1/3.0, 1/3.0};
    \n-
    57 m[3] = { 1/3.0, 0.0, 1/3.0};
    \n-
    58 m[4] = { 1/3.0, 2/3.0, 1/3.0};
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    69 template<class F, class C>
    \n-
    \n-
    70 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    71 {
    \n-
    72 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    73
    \n-
    74 out.resize(5);
    \n-
    75 for(int i=0; i<5; i++)
    \n-
    76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];
    \n-
    77 }
    \n-
    \n-
    78
    \n-
    79 private:
    \n-
    80 // Facet orientations
    \n-
    81 std::array<typename LB::Traits::RangeFieldType, 5> sign;
    \n-
    82 // Facet area
    \n-
    83 std::array<typename LB::Traits::RangeFieldType, 5> c;
    \n-
    84
    \n-
    85 // Facet normals
    \n-
    86 std::array<typename LB::Traits::DomainType, 5> n;
    \n-
    87 // Facet midpoints
    \n-
    88 std::array<typename LB::Traits::DomainType, 5> m;
    \n-
    89 };
    \n-
    \n-
    90}
    \n-
    91#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH
    \n+
    8#include <fstream>
    \n+
    9#include <dune/common/exceptions.hh>
    \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 coefficent 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 Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0pyramidlocalinterpolation.hh:24
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas0pyramidlocalinterpolation.hh:70
    \n-
    RT0PyramidLocalInterpolation(std::bitset< 5 > s=0)
    Make set number s, where 0 <= s < 32.
    Definition raviartthomas0pyramidlocalinterpolation.hh:33
    \n-\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": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-us-ascii\n+utf-8\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,98 +1,70 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMASBASIS_HH\n+6#define DUNE_RAVIARTTHOMASBASIS_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\n-22 template\n-_\b2_\b3 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-24 {\n-25\n-26 public:\n-27\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 (std::bitset<5> s = 0)\n-34 {\n-35 typedef typename LB::Traits::RangeFieldType Scalar;\n-36\n-37 for (size_t i=0; i<5; i++)\n-38 sign[i] = (s[i]) ? -1.0 : 1.0;\n-39\n-40 Scalar r = 1/std::sqrt(2);\n-41\n-42 n[0] = { 0.0, 0.0, -1.0};\n-43 n[1] = {-1.0, 0.0, 0.0};\n-44 n[2] = { r, 0.0, r};\n-45 n[3] = { 0.0, -1.0, 0.0};\n-46 n[4] = { 0.0, r, r};\n-47\n-48 c[0] = 1.0;\n-49 c[1] = 1/2.0;\n-50 c[2] = 1/2.0 * std::sqrt(2);\n-51 c[3] = 1/2.0;\n-52 c[4] = 1/2.0 * std::sqrt(2);\n-53\n-54 m[0] = { 0.5, 0.5, 0.0};\n-55 m[1] = { 0.0, 1/3.0, 1/3.0};\n-56 m[2] = { 2/3.0, 1/3.0, 1/3.0};\n-57 m[3] = { 1/3.0, 0.0, 1/3.0};\n-58 m[4] = { 1/3.0, 2/3.0, 1/3.0};\n-59 }\n-60\n-69 template\n-_\b7_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-71 {\n-72 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-73\n-74 out.resize(5);\n-75 for(int i=0; i<5; i++)\n-76 out[i] = f(m[i]).dot(n[i]) * c[i] * sign[i];\n-77 }\n-78\n-79 private:\n-80 // Facet orientations\n-81 std::array sign;\n-82 // Facet area\n-83 std::array c;\n-84\n-85 // Facet normals\n-86 std::array n;\n-87 // Facet midpoints\n-88 std::array m;\n-89 };\n-90}\n-91#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_PYRAMID_LOCALINTERPOLATION_HH\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 coefficent 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 _\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: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_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &ff, 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:70\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:33\n-_\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_\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/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: raviartthomas3cube2d.hh File Reference\n+dune-localfunctions: raviartthomas2cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -72,29 +72,29 @@\n
  • dune
  • localfunctions
  • raviartthomas
  • \n \n \n
    \n \n-
    raviartthomas3cube2d.hh File Reference
    \n+
    raviartthomas2cube2d.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::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": "@@ -2,23 +2,23 @@\n Loading...\n Searching...\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-raviartthomas3cube2d.hh File Reference\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_\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 \"_\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:_\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+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/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: raviartthomas3cube2d.hh Source File\n+dune-localfunctions: raviartthomas2cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -74,119 +74,119 @@\n \n \n
    \n
    \n-
    raviartthomas3cube2d.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
    2// vi: set et ts=4 sw=2 sts=2:
    \n
    3// SPDX-FileCopyrightInfo: Copyright (C) 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_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_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-
    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::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 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:26
    \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:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,136 +1,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS2_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_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 \"_\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-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 _\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_\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_\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+_\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 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\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 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+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 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+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 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+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 raviartthomas3cube2dlocalinterpolation.hh:26\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: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/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: raviartthomascube.hh File Reference\n+dune-localfunctions: raviartthomas0cube3d.hh File Reference\n \n \n \n \n \n \n \n@@ -72,61 +72,34 @@\n
  • dune
  • localfunctions
  • raviartthomas
  • \n \n \n
    \n \n-
    raviartthomascube.hh File Reference
    \n+
    raviartthomas0cube3d.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+\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::RT0Cube3DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on cubes. 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": "@@ -2,55 +2,21 @@\n Loading...\n Searching...\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-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+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 _\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:_\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-*\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/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: raviartthomascube.hh Source File\n+dune-localfunctions: raviartthomas0cube3d.hh Source File\n \n \n \n \n \n \n \n@@ -74,209 +74,115 @@\n \n \n \n
    \n-
    raviartthomascube.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 (C) 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_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_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+
    8#include <dune/geometry/type.hh>
    \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+
    \n+
    44
    \n+
    \n+\n+
    46 {
    \n+
    47 return coefficients;
    \n+
    48 }
    \n+
    \n+
    49
    \n \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-
    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-
    155
    \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+\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-
    Zero order Raviart-Thomas shape functions on rectangles.
    Definition raviartthomas0cube2d.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-
    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+
    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+
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0cube3dall.hh:30
    \n+
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0cube3dall.hh:157
    \n+
    Layout map for RT0 elements on quadrilaterals.
    Definition raviartthomas0cube3dall.hh:215
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,221 +1,130 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_LOCALFINITEELEMENT_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-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_\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-_\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_\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_\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+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+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_\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+_\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+_\bl_\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:_\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_\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:_\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+Lowest order Raviart-Thomas shape functions on the reference hexahedron.\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+Lowest order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:157\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+Layout map for RT0 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:215\n ===============================================================================\n 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: raviartthomas2cube2d.hh File Reference\n+dune-localfunctions: raviartthomas0cube3dall.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-
    raviartthomas2cube2d.hh File Reference
    \n+
    raviartthomas0cube3dall.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 <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/localfunctions/common/localinterpolation.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::RT2Cube2DLocalFiniteElement< D, R >
     Second order Raviart-Thomas shape functions on cubes. More...
    class  Dune::RT0Cube3DLocalBasis< D, R >
     Lowest order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    class  Dune::RT0Cube3DLocalInterpolation< LB >
     Lowest order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    class  Dune::RT0Cube3DLocalCoefficients
     Layout map for RT0 elements on quadrilaterals. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,35 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+raviartthomas0cube3dall.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/_\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_\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:_\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 Lowest order Raviart-Thomas shape functions on the reference\n+ hexahedron. _\bM_\bo_\br_\be_\b._\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 Lowest order Raviart-Thomas shape functions on the reference\n+ hexahedron. _\bM_\bo_\br_\be_\b._\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 Layout map for RT0 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/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: raviartthomas2cube2d.hh Source File\n+dune-localfunctions: raviartthomas0cube3dall.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,281 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas2cube2d.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 (C) 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_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_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+
    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+\n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \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-\n-
    37 {}
    \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-
    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+
    52
    \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+
    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+
    155 template<class LB>
    \n+
    \n+\n+
    157 {
    \n+
    158 public:
    \n+
    159
    \n+
    \n+
    161 RT0Cube3DLocalInterpolation (unsigned int s = 0)
    \n+
    162 {
    \n+
    163 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n+
    164 if (s&1) sign0 *= -1.0;
    \n+
    165 if (s&2) sign1 *= -1.0;
    \n+
    166 if (s&4) sign2 *= -1.0;
    \n+
    167 if (s&8) sign3 *= -1.0;
    \n+
    168 if (s&16) sign4 *= -1.0;
    \n+
    169 if (s&32) sign5 *= -1.0;
    \n+
    170
    \n+
    171 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;
    \n+
    172 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;
    \n+
    173 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;
    \n+
    174 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;
    \n+
    175 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;
    \n+
    176 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;
    \n+
    177
    \n+
    178 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;
    \n+
    179 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;
    \n+
    180 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;
    \n+
    181 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;
    \n+
    182 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;
    \n+
    183 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;
    \n+
    184 }
    \n+
    \n+
    185
    \n+
    186 template<typename F, typename C>
    \n+
    \n+
    187 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    188 {
    \n+
    189 // f gives v*outer normal at a point on the edge!
    \n+
    190 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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+
    215 {
    \n+
    216 public:
    \n+
    \n+\n+
    219 {
    \n+
    220 for (std::size_t i=0; i<6; i++)
    \n+
    221 li[i] = LocalKey(i,1,0);
    \n+
    222 }
    \n+
    \n+
    223
    \n+
    \n+
    225 std::size_t size () const
    \n+
    226 {
    \n+
    227 return 6;
    \n+
    228 }
    \n+
    \n+
    229
    \n+
    \n+
    231 const LocalKey& localKey (std::size_t i) const
    \n+
    232 {
    \n+
    233 return li[i];
    \n+
    234 }
    \n+
    \n+
    235
    \n+
    236 private:
    \n+
    237 std::vector<LocalKey> li;
    \n+
    238 };
    \n+
    \n+
    239
    \n+
    240}
    \n+
    241#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_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 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:26
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    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+
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0cube3dall.hh:157
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas0cube3dall.hh:187
    \n+
    RT0Cube3DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas0cube3dall.hh:161
    \n+
    Layout map for RT0 elements on quadrilaterals.
    Definition raviartthomas0cube3dall.hh:215
    \n+
    RT0Cube3DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube3dall.hh:218
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube3dall.hh:225
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube3dall.hh:231
    \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,300 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_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+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+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_\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+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 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_\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_\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\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+155 template\n+_\b1_\b5_\b6 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+157 {\n+158 public:\n+159\n+_\b1_\b6_\b1 _\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+162 {\n+163 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n+164 if (s&1) sign0 *= -1.0;\n+165 if (s&2) sign1 *= -1.0;\n+166 if (s&4) sign2 *= -1.0;\n+167 if (s&8) sign3 *= -1.0;\n+168 if (s&16) sign4 *= -1.0;\n+169 if (s&32) sign5 *= -1.0;\n+170\n+171 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;\n+172 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;\n+173 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;\n+174 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;\n+175 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;\n+176 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;\n+177\n+178 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;\n+179 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;\n+180 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;\n+181 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;\n+182 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;\n+183 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;\n+184 }\n+185\n+186 template\n+_\b1_\b8_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+188 {\n+189 // f gives v*outer normal at a point on the edge!\n+190 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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_\b4 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+215 {\n+216 public:\n+_\b2_\b1_\b8 _\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+219 {\n+220 for (std::size_t i=0; i<6; i++)\n+221 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+222 }\n+223\n+_\b2_\b2_\b5 std::size_t _\bs_\bi_\bz_\be () const\n+226 {\n+227 return 6;\n+228 }\n+229\n+_\b2_\b3_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n+232 {\n+233 return li[i];\n+234 }\n+235\n+236 private:\n+237 std::vector li;\n+238 };\n+239\n+240}\n+241#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:_\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+_\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:34\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:42\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:23\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+Lowest order Raviart-Thomas shape functions on the reference hexahedron.\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 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+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+Lowest order Raviart-Thomas shape functions on the reference hexahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:157\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 &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:187\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:161\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+Layout map for RT0 elements on quadrilaterals.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:215\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 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:26\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:218\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:225\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:231\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 ===============================================================================\n 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: raviartthomas03dlocalbasis.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-
    raviartthomas0prism.hh File Reference
    \n+
    raviartthomas03dlocalbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "raviartthomas0prism/raviartthomas0prismlocalbasis.hh"
    \n-#include "raviartthomas0prism/raviartthomas0prismlocalcoefficients.hh"
    \n-#include "raviartthomas0prism/raviartthomas0prismlocalinterpolation.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 Classes

    class  Dune::RT0PrismLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on prisms. More...
    class  Dune::RT03DLocalBasis< D, R >
     Lowest order Raviart-Thomas shape functions on the reference tetrahedron. 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.9.0\n Loading...\n Searching...\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-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+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:_\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:_\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 Lowest order Raviart-Thomas shape functions on the reference\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 ===============================================================================\n 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: raviartthomas03dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,143 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0prism.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 (C) 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_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <numeric>
    \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-
    35
    \n-
    \n-\n-
    38 {}
    \n+
    10#include <dune/common/fmatrix.hh>
    \n+
    11
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    24 template<class D, class R>
    \n+
    \n+\n+
    26 {
    \n+
    27 public:
    \n+
    28 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,3,Dune::FieldVector<R,3>,
    \n+
    29 Dune::FieldMatrix<R,3,3> > Traits;
    \n+
    30
    \n+
    \n+
    32 RT03DLocalBasis (std::bitset<4> s = 0)
    \n+
    33 {
    \n+
    34 for (int i=0; i<4; i++)
    \n+
    35 sign_[i] = s[i] ? -1.0 : 1.0;
    \n+
    36 }
    \n+
    \n+
    37
    \n+
    \n+
    39 unsigned int size () const
    \n+
    40 {
    \n+
    41 return 4;
    \n+
    42 }
    \n
    \n-
    39
    \n+
    43
    \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+
    45 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    46 std::vector<typename Traits::RangeType>& out) const
    \n+
    47 {
    \n+
    48 out.resize(4);
    \n+
    49 auto c = std::sqrt(2.0);
    \n+
    50 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};
    \n+
    51 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };
    \n+
    52 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };
    \n+
    53 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };
    \n+
    54 }
    \n+
    \n+
    55
    \n+
    57 inline void
    \n+
    \n+
    58 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    59 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    60 {
    \n+
    61 out.resize(4);
    \n+
    62 for (int i=0; i<4; i++)
    \n+
    63 {
    \n+
    64 auto c = std::sqrt(2.0);
    \n+
    65 out[i][0] = {c*sign_[i], 0, 0};
    \n+
    66 out[i][1] = { 0,c*sign_[i], 0};
    \n+
    67 out[i][2] = { 0, 0,c*sign_[i]};
    \n+
    68 }
    \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+
    72 void partial (const std::array<unsigned int, 3>& order,
    \n+
    73 const typename Traits::DomainType& in, // position
    \n+
    74 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    75 {
    \n+
    76 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    77 if (totalOrder == 0) {
    \n+
    78 evaluateFunction(in, out);
    \n+
    79 } else if (totalOrder == 1) {
    \n+
    80 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    81 out.resize(size());
    \n+
    82
    \n+
    83 for (int i=0; i<size(); i++)
    \n+
    84 {
    \n+
    85 out[i][direction] = sign_[i]* std::sqrt(2.0) ;
    \n+
    86 out[i][(direction+1)%3] = 0;
    \n+
    87 out[i][(direction+2)%3] = 0;
    \n+
    88 }
    \n+
    89 } else {
    \n+
    90 out.resize(size());
    \n+
    91 for (std::size_t i = 0; i < size(); ++i)
    \n+
    92 for (std::size_t j = 0; j < 3; ++j)
    \n+
    93 out[i][j] = 0;
    \n+
    94 }
    \n+
    95
    \n+
    96 }
    \n+
    \n+
    97
    \n+
    \n+
    99 unsigned int order () const
    \n+
    100 {
    \n+
    101 return 1;
    \n+
    102 }
    \n+
    \n+
    103
    \n+
    104 private:
    \n+
    105
    \n+
    106 // Signs of the face normals
    \n+
    107 std::array<R,4> sign_;
    \n+
    108 };
    \n+
    \n+
    109}
    \n+
    110#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-
    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:24
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Lowest order Raviart-Thomas shape functions on the reference tetrahedron.
    Definition raviartthomas03dlocalbasis.hh:26
    \n+
    RT03DLocalBasis(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas03dlocalbasis.hh:32
    \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:72
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas03dlocalbasis.hh:99
    \n+
    unsigned int size() const
    number of shape functions
    Definition raviartthomas03dlocalbasis.hh:39
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas03dlocalbasis.hh:58
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas03dlocalbasis.hh:45
    \n+
    LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 3, Dune::FieldVector< R, 3 >, Dune::FieldMatrix< R, 3, 3 > > Traits
    Definition raviartthomas03dlocalbasis.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,157 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALBASIS_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_\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-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-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+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+24 template\n+_\b2_\b5 class _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\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<_\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+_\b2_\b9 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+30\n+_\b3_\b2 _\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<4> s = 0)\n+33 {\n+34 for (int i=0; i<4; i++)\n+35 sign_[i] = s[i] ? -1.0 : 1.0;\n+36 }\n+37\n+_\b3_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+40 {\n+41 return 4;\n+42 }\n+43\n+_\b4_\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+46 std::vector& out) const\n+47 {\n+48 out.resize(4);\n+49 auto c = std::sqrt(2.0);\n+50 out[0] = {sign_[0]*c* in[0], sign_[0]*c* in[1], sign_[0]*c*(in[2]-D(1))};\n+51 out[1] = {sign_[1]*c* in[0], sign_[1]*c*(in[1]-D(1)), sign_[1]*c* in[2] };\n+52 out[2] = {sign_[2]*c*(in[0]-D(1)), sign_[2]*c* in[1], sign_[2]*c* in[2] };\n+53 out[3] = {sign_[3]*c* in[0], sign_[3]*c* in[1], sign_[3]*c* in[2] };\n+54 }\n+55\n+57 inline void\n+_\b5_\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+59 std::vector& out) const // return value\n+60 {\n+61 out.resize(4);\n+62 for (int i=0; i<4; i++)\n+63 {\n+64 auto c = std::sqrt(2.0);\n+65 out[i][0] = {c*sign_[i], 0, 0};\n+66 out[i][1] = { 0,c*sign_[i], 0};\n+67 out[i][2] = { 0, 0,c*sign_[i]};\n+68 }\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+_\b7_\b2 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n+73 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 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+77 if (totalOrder == 0) {\n+78 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+79 } else if (totalOrder == 1) {\n+80 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+81 out.resize(_\bs_\bi_\bz_\be());\n+82\n+83 for (int i=0; i<_\bs_\bi_\bz_\be(); i++)\n+84 {\n+85 out[i][direction] = sign_[i]* std::sqrt(2.0) ;\n+86 out[i][(direction+1)%3] = 0;\n+87 out[i][(direction+2)%3] = 0;\n+88 }\n+89 } else {\n+90 out.resize(_\bs_\bi_\bz_\be());\n+91 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n+92 for (std::size_t j = 0; j < 3; ++j)\n+93 out[i][j] = 0;\n+94 }\n+95\n+96 }\n+97\n+_\b9_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+100 {\n+101 return 1;\n+102 }\n+103\n+104 private:\n+105\n+106 // Signs of the face normals\n+107 std::array sign_;\n+108 };\n+109}\n+110#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:_\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+_\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:34\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:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Lowest order Raviart-Thomas shape functions on the reference tetrahedron.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:26\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:32\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:72\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:99\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 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:24\n+number of shape functions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:39\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:58\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:45\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:29\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/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: raviartthomas0cube2dall.hh File Reference\n+dune-localfunctions: raviartthomas03dlocalinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0cube2dall.hh File Reference
    \n+
    raviartthomas03dlocalinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <numeric>
    \n+
    #include <cmath>
    \n+#include <array>
    \n+#include <bitset>
    \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/localfunctions/common/localinterpolation.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::RT0Cube2DLocalBasis< D, R >
     Lowest order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    class  Dune::RT0Cube2DLocalInterpolation< LB >
     Lowest order Raviart-Thomas shape functions on the reference quadrilateral. More...
     
    class  Dune::RT0Cube2DLocalCoefficients
     Layout map for RT0 elements on quadrilaterals. More...
    class  Dune::RT03DLocalInterpolation< LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas0cube2dall.hh File Reference\n-#include \n-#include \n+raviartthomas03dlocalinterpolation.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_\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 Lowest order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\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 Lowest order Raviart-Thomas shape functions on the reference\n- quadrilateral. _\bM_\bo_\br_\be_\b._\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 Layout map for RT0 elements on quadrilaterals. _\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/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: raviartthomas0cube2dall.hh Source File\n+dune-localfunctions: raviartthomas03dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,251 +70,99 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0cube2dall.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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_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 <cmath>
    \n+
    9#include <array>
    \n+
    10#include <bitset>
    \n+
    11#include <vector>
    \n+\n
    13
    \n-\n-\n-\n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \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+
    14namespace Dune
    \n+
    15{
    \n+
    16 template<class LB>
    \n+
    \n+\n+
    18 {
    \n+
    19 public:
    \n+
    20
    \n+
    \n+
    22 RT03DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    23 {
    \n+
    24 using std::sqrt;
    \n+
    25 for (std::size_t i=0; i<sign_.size(); i++)
    \n+
    26 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n+
    27
    \n+
    28 m_[0] = {1/3.0, 1/3.0, 0.0};
    \n+
    29 m_[1] = {1/3.0, 0.0, 1/3.0};
    \n+
    30 m_[2] = { 0.0, 1/3.0, 1/3.0};
    \n+
    31 m_[3] = {1/3.0, 1/3.0, 1/3.0};
    \n+
    32 n_[0] = { 0.0, 0.0, -1.0};
    \n+
    33 n_[1] = { 0.0, -1.0, 0.0};
    \n+
    34 n_[2] = { -1.0, 0.0, 0.0};
    \n+
    35 n_[3] = {1.0/sqrt(3.0), 1.0/sqrt(3.0), 1.0/sqrt(3.0)};
    \n+
    36 c_[0] = sqrt(2.0);
    \n+
    37 c_[1] = sqrt(2.0);
    \n+
    38 c_[2] = sqrt(2.0);
    \n+
    39 c_[3] = sqrt(2.0)/sqrt(3.0);
    \n
    40 }
    \n
    \n
    41
    \n+
    42 template<typename F, typename C>
    \n
    \n-
    43 unsigned int size () const
    \n+
    43 void interpolate (const F& ff, std::vector<C>& out) const
    \n
    44 {
    \n-
    45 return 4;
    \n-
    46 }
    \n-
    \n+
    45 // f gives v*outer normal at a point on the face!
    \n+
    46 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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-
    132 template<class LB>
    \n-
    \n-\n-
    134 {
    \n-
    135 public:
    \n-
    136
    \n-
    \n-
    138 RT0Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n-
    139 {
    \n-
    140 for (int i=0; i<4; i++)
    \n-
    141 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    142
    \n-
    143 m0 = {0.0, 0.5};
    \n-
    144 m1 = {1.0, 0.5};
    \n-
    145 m2 = {0.5, 0.0};
    \n-
    146 m3 = {0.5, 1.0};
    \n-
    147
    \n-
    148 n0 = {-1.0, 0.0};
    \n-
    149 n1 = { 1.0, 0.0};
    \n-
    150 n2 = { 0.0, -1.0};
    \n-
    151 n3 = { 0.0, 1.0};
    \n-
    152 }
    \n-
    \n-
    153
    \n-
    154 template<typename F, typename C>
    \n-
    \n-
    155 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    156 {
    \n-
    157 // f gives v*outer normal at a point on the edge!
    \n-
    158 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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-
    186 {
    \n-
    187 public:
    \n-
    \n-\n-
    190 {
    \n-
    191 for (std::size_t i=0; i<4; i++)
    \n-
    192 li[i] = LocalKey(i,1,0);
    \n-
    193 }
    \n-
    \n-
    194
    \n-
    \n-
    196 std::size_t size () const
    \n-
    197 {
    \n-
    198 return 4;
    \n-
    199 }
    \n-
    \n-
    200
    \n-
    \n-
    202 const LocalKey& localKey (std::size_t i) const
    \n-
    203 {
    \n-
    204 return li[i];
    \n-
    205 }
    \n-
    \n-
    206
    \n-
    207 private:
    \n-
    208 std::vector<LocalKey> li;
    \n-
    209 };
    \n-
    \n-
    210
    \n-
    211}
    \n-
    212#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH
    \n-\n+
    48 out.resize(4);
    \n+
    49
    \n+
    50 for (int i=0; i<4; i++)
    \n+
    51 {
    \n+
    52 auto y = f(m_[i]);
    \n+
    53 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1]+y[2]*n_[i][2])*sign_[i]/c_[i];
    \n+
    54 }
    \n+
    55 }
    \n+
    \n+
    56
    \n+
    57 private:
    \n+
    58 // Face orientations
    \n+
    59 std::array<typename LB::Traits::RangeFieldType,4> sign_;
    \n+
    60 // Face midpoints of the reference tetrahedron
    \n+
    61 std::array<typename LB::Traits::DomainType,4> m_;
    \n+
    62 // Unit outer normals of the reference tetrahedron
    \n+
    63 std::array<typename LB::Traits::DomainType,4> n_;
    \n+
    64 // Inverse triangle face area
    \n+
    65 std::array<typename LB::Traits::RangeFieldType,4> c_;
    \n+
    66 };
    \n+
    \n+
    67}
    \n+
    68
    \n+
    69#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Lowest order Raviart-Thomas shape functions on the reference quadrilateral.
    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-
    Lowest order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas0cube2dall.hh:134
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas0cube2dall.hh:155
    \n-
    RT0Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Constructor with explicitly given edge orientations.
    Definition raviartthomas0cube2dall.hh:138
    \n-
    Layout map for RT0 elements on quadrilaterals.
    Definition raviartthomas0cube2dall.hh:186
    \n-
    RT0Cube2DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube2dall.hh:189
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube2dall.hh:196
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube2dall.hh:202
    \n-\n+
    Definition raviartthomas03dlocalinterpolation.hh:18
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas03dlocalinterpolation.hh:43
    \n+
    RT03DLocalInterpolation(std::bitset< 4 > s=0)
    Constructor with given set of face orientations.
    Definition raviartthomas03dlocalinterpolation.hh:22
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,271 +1,96 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_HH\n+6#define\n+DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALINTERPOLATION_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#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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\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-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+14namespace _\bD_\bu_\bn_\be\n+15{\n+16 template\n+_\b1_\b7 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+18 {\n+19 public:\n+20\n+_\b2_\b2 _\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+23 {\n+24 using std::sqrt;\n+25 for (std::size_t i=0; i\n+_\b4_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n 44 {\n-45 return 4;\n-46 }\n+45 // f gives v*outer normal at a point on the face!\n+46 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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+48 out.resize(4);\n+49\n+50 for (int i=0; i<4; i++)\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-132 template\n-_\b1_\b3_\b3 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-134 {\n-135 public:\n-136\n-_\b1_\b3_\b8 _\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-139 {\n-140 for (int i=0; i<4; i++)\n-141 sign_[i] = s[i] ? -1.0 : 1.0;\n-142\n-143 m0 = {0.0, 0.5};\n-144 m1 = {1.0, 0.5};\n-145 m2 = {0.5, 0.0};\n-146 m3 = {0.5, 1.0};\n-147\n-148 n0 = {-1.0, 0.0};\n-149 n1 = { 1.0, 0.0};\n-150 n2 = { 0.0, -1.0};\n-151 n3 = { 0.0, 1.0};\n-152 }\n-153\n-154 template\n-_\b1_\b5_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-156 {\n-157 // f gives v*outer normal at a point on the edge!\n-158 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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_\b5 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-186 {\n-187 public:\n-_\b1_\b8_\b9 _\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-190 {\n-191 for (std::size_t i=0; i<4; i++)\n-192 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-193 }\n-194\n-_\b1_\b9_\b6 std::size_t _\bs_\bi_\bz_\be () const\n-197 {\n-198 return 4;\n-199 }\n-200\n-_\b2_\b0_\b2 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-203 {\n-204 return li[i];\n-205 }\n-206\n-207 private:\n-208 std::vector li;\n-209 };\n-210\n-211}\n-212#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE2D_ALL_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+52 auto y = f(m_[i]);\n+53 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1]+y[2]*n_[i][2])*sign_[i]/c_[i];\n+54 }\n+55 }\n+56\n+57 private:\n+58 // Face orientations\n+59 std::array sign_;\n+60 // Face midpoints of the reference tetrahedron\n+61 std::array m_;\n+62 // Unit outer normals of the reference tetrahedron\n+63 std::array n_;\n+64 // Inverse triangle face area\n+65 std::array c_;\n+66 };\n+67}\n+68\n+69#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:34\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:42\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:23\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-Lowest order Raviart-Thomas shape functions on the reference quadrilateral.\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-Lowest order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:134\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+_\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:18\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:155\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:138\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-Layout map for RT0 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:186\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:189\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:196\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:202\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 raviartthomas03dlocalinterpolation.hh:43\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:22\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/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: raviartthomassimplexprebasis.hh File Reference\n+dune-localfunctions: raviartthomas03dlocalcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,38 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomassimplexprebasis.hh File Reference
    \n+
    raviartthomas03dlocalcoefficients.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 <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 Classes

    struct  Dune::RTPreBasisFactory< dim, Field >
     
    struct  Dune::RTPreBasisFactory< dim, Field >::EvaluationBasisFactory< dd, FF >
     
    struct  Dune::RTVecMatrix< geometryId, Field >
    class  Dune::RT03DLocalCoefficients
     Layout map for RT0 elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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-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:_\bR_\bT_\b0_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for RT0 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/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: raviartthomassimplexprebasis.hh Source File\n+dune-localfunctions: raviartthomas03dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,283 +70,78 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomassimplexprebasis.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 (C) 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_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMAS03D_RAVIARTTHOMAS03DLOCALCOEFFICIENTS_HH
    \n
    7
    \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 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-
    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+
    8#include <cstddef>
    \n+
    9#include <iostream>
    \n+
    10#include <vector>
    \n+
    11
    \n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    \n+\n+
    24 {
    \n+
    25 public:
    \n+
    \n+\n+
    28 {
    \n+
    29 for (std::size_t i=0; i<4; i++)
    \n+
    30 li[i] = LocalKey(i,1,0);
    \n+
    31 }
    \n+
    \n+
    32
    \n+
    \n+
    34 std::size_t size () const
    \n+
    35 {
    \n+
    36 return 4;
    \n+
    37 }
    \n+
    \n+
    38
    \n+
    \n+
    40 const LocalKey& localKey (std::size_t i) const
    \n+
    41 {
    \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-
    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:37
    \n-
    Definition polynomialbasis.hh:348
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Layout map for RT0 elements.
    Definition raviartthomas03dlocalcoefficients.hh:24
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas03dlocalcoefficients.hh:40
    \n+
    RT03DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas03dlocalcoefficients.hh:27
    \n+
    std::size_t size() const
    number of coefficients
    Definition raviartthomas03dlocalcoefficients.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,329 +1,78 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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\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\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 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 _\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 /*\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+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+_\b2_\b3 class _\bR_\bT_\b0_\b3_\bD_\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 _\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+28 {\n+29 for (std::size_t i=0; i<4; i++)\n+30 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n+31 }\n+32\n+_\b3_\b4 std::size_t _\bs_\bi_\bz_\be () const\n+35 {\n+36 return 4;\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 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:_\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:37\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:23\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+Layout map for RT0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.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_\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:40\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: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_\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: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/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: raviartthomassimplexbasis.hh File Reference\n+dune-localfunctions: raviartthomassimplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,45 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomassimplexbasis.hh File Reference
    \n+
    raviartthomassimplex.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+\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

    struct  Dune::RaviartThomasBasisFactory< dim, SF, CF >
    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,24 +1,27 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+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-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:_\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/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: raviartthomassimplexbasis.hh Source File\n+dune-localfunctions: raviartthomassimplex.hh Source File\n \n \n \n \n \n \n \n@@ -70,72 +70,66 @@\n \n \n \n \n \n \n \n
    \n-
    raviartthomassimplexbasis.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 (C) 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_RAVIARTTHOMAS_SIMPLEX_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <dune/common/exceptions.hh>
    \n+\n+\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 coefficent 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+
    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+
    \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-
    Definition raviartthomassimplexbasis.hh:40
    \n-
    Definition defaultbasisfactory.hh:38
    \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:421
    \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": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,70 +1,72 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS_SIMPLEX_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_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/_\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-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 coefficent 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-_\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_\be_\bf_\ba_\bu_\bl_\bt_\bb_\ba_\bs_\bi_\bs_\bf_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\bh\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+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:_\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:_\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:421\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/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: raviartthomassimplexinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas2cube2dlocalcoefficients.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-
    raviartthomassimplexinterpolation.hh File Reference
    \n+
    raviartthomas2cube2dlocalcoefficients.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 <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::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::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,39 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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:_\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/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: raviartthomassimplexinterpolation.hh Source File\n+dune-localfunctions: raviartthomas2cube2dlocalcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,546 +70,83 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomassimplexinterpolation.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 (C) 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_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_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/common/exceptions.hh>
    \n+
    11#include "../../common/localkey.hh"
    \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-
    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+
    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 LocalCoefficientsContainer ( const Setter &setter )
    \n-
    44 {
    \n-
    45 setter.setLocalKeys(localKey_);
    \n+
    43 std::size_t size () const
    \n+
    44 {
    \n+
    45 return 24;
    \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+
    \n+
    49 const LocalKey& localKey (std::size_t i) const
    \n+
    50 {
    \n+
    51 return li[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-
    \n-
    226 auto interpolate ( const Function &function, Vector &coefficients ) const
    \n-
    227 -> std::enable_if_t< std::is_same< decltype(std::declval<Vector>().resize(1) ),void >::value,void>
    \n-
    228 {
    \n-
    229 coefficients.resize(size());
    \n-
    230 typename Base::template Helper<Function,Vector,true> func( function,coefficients );
    \n-
    231 interpolate(func);
    \n-
    232 }
    \n-
    \n-
    233
    \n-
    234 template< class Basis, class Matrix >
    \n-
    \n-
    235 auto interpolate ( const Basis &basis, Matrix &matrix ) const
    \n-
    236 -> std::enable_if_t< std::is_same<
    \n-
    237 decltype(std::declval<Matrix>().rowPtr(0)), typename Matrix::Field* >::value,void>
    \n-
    238 {
    \n-
    239 matrix.resize( size(), basis.size() );
    \n-
    240 typename Base::template Helper<Basis,Matrix,false> func( basis,matrix );
    \n-
    241 interpolate(func);
    \n-
    242 }
    \n-
    \n-
    243
    \n-
    \n-
    244 std::size_t order() const
    \n-
    245 {
    \n-
    246 return order_;
    \n-
    247 }
    \n-
    \n-
    \n-
    248 std::size_t size() const
    \n-
    249 {
    \n-
    250 return size_;
    \n-
    251 }
    \n-
    \n-
    252 template <GeometryType::Id geometryId>
    \n-
    \n-
    253 void build( std::size_t order )
    \n-
    254 {
    \n-
    255 size_ = 0;
    \n-
    256 order_ = order;
    \n-
    257 builder_.template build<geometryId>(order_);
    \n-
    258 if (builder_.testBasis())
    \n-
    259 size_ += dimension*builder_.testBasis()->size();
    \n-
    260 for ( unsigned int f=0; f<builder_.faceSize(); ++f )
    \n-
    261 if (builder_.testFaceBasis(f))
    \n-
    262 size_ += builder_.testFaceBasis(f)->size();
    \n-
    263 }
    \n-
    \n-
    264
    \n-
    \n-
    265 void setLocalKeys(std::vector< LocalKey > &keys) const
    \n-
    266 {
    \n-
    267 keys.resize(size());
    \n-
    268 unsigned int row = 0;
    \n-
    269 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    270 {
    \n-
    271 if (builder_.faceSize())
    \n-
    272 for (unsigned int i=0; i<builder_.testFaceBasis(f)->size(); ++i,++row)
    \n-
    273 keys[row] = LocalKey(f,1,i);
    \n-
    274 }
    \n-
    275 if (builder_.testBasis())
    \n-
    276 for (unsigned int i=0; i<builder_.testBasis()->size()*dimension; ++i,++row)
    \n-
    277 keys[row] = LocalKey(0,0,i);
    \n-
    278 assert( row == size() );
    \n-
    279 }
    \n-
    \n-
    280
    \n-
    281 protected:
    \n-
    282 template< class Func, class Container, bool type >
    \n-
    \n-
    283 void interpolate ( typename Base::template Helper<Func,Container,type> &func ) const
    \n-
    284 {
    \n-
    285 const Dune::GeometryType geoType = builder_.type();
    \n-
    286
    \n-
    287 std::vector< Field > testBasisVal;
    \n-
    288
    \n-
    289 for (unsigned int i=0; i<size(); ++i)
    \n-
    290 for (unsigned int j=0; j<func.size(); ++j)
    \n-
    291 func.set(i,j,0);
    \n-
    292
    \n-
    293 unsigned int row = 0;
    \n-
    294
    \n-
    295 // boundary dofs:
    \n-
    296 typedef Dune::QuadratureRule<Field, dimension-1> FaceQuadrature;
    \n-
    297 typedef Dune::QuadratureRules<Field, dimension-1> FaceQuadratureRules;
    \n-
    298
    \n-
    299 const auto &refElement = Dune::ReferenceElements< Field, dimension >::general( geoType );
    \n-
    300
    \n-
    301 for (unsigned int f=0; f<builder_.faceSize(); ++f)
    \n-
    302 {
    \n-
    303 if (!builder_.testFaceBasis(f))
    \n-
    304 continue;
    \n-
    305 testBasisVal.resize(builder_.testFaceBasis(f)->size());
    \n-
    306
    \n-
    307 const auto &geometry = refElement.template geometry< 1 >( f );
    \n-
    308 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );
    \n-
    309 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType, 2*order_+2 );
    \n-
    310
    \n-
    311 const unsigned int quadratureSize = faceQuad.size();
    \n-
    312 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    313 {
    \n-
    314 if (dimension>1)
    \n-
    315 builder_.testFaceBasis(f)->template evaluate<0>(faceQuad[qi].position(),testBasisVal);
    \n-
    316 else
    \n-
    317 testBasisVal[0] = 1.;
    \n-
    318 fillBnd( row, testBasisVal,
    \n-
    319 func.evaluate( geometry.global( faceQuad[qi].position() ) ),
    \n-
    320 builder_.normal(f), faceQuad[qi].weight(),
    \n-
    321 func);
    \n-
    322 }
    \n-
    323
    \n-
    324 row += builder_.testFaceBasis(f)->size();
    \n-
    325 }
    \n-
    326 // element dofs
    \n-
    327 if (builder_.testBasis())
    \n-
    328 {
    \n-
    329 testBasisVal.resize(builder_.testBasis()->size());
    \n-
    330
    \n-
    331 typedef Dune::QuadratureRule<Field, dimension> Quadrature;
    \n-
    332 typedef Dune::QuadratureRules<Field, dimension> QuadratureRules;
    \n-
    333 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );
    \n-
    334
    \n-
    335 const unsigned int quadratureSize = elemQuad.size();
    \n-
    336 for( unsigned int qi = 0; qi < quadratureSize; ++qi )
    \n-
    337 {
    \n-
    338 builder_.testBasis()->template evaluate<0>(elemQuad[qi].position(),testBasisVal);
    \n-
    339 fillInterior( row, testBasisVal,
    \n-
    340 func.evaluate(elemQuad[qi].position()),
    \n-
    341 elemQuad[qi].weight(),
    \n-
    342 func );
    \n-
    343 }
    \n-
    344
    \n-
    345 row += builder_.testBasis()->size()*dimension;
    \n-
    346 }
    \n-
    347 assert(row==size());
    \n-
    348 }
    \n-
    \n-
    349
    \n-
    350 private:
    \n-
    360 template <class MVal, class RTVal,class Matrix>
    \n-
    361 void fillBnd (unsigned int startRow,
    \n-
    362 const MVal &mVal,
    \n-
    363 const RTVal &rtVal,
    \n-
    364 const FieldVector<Field,dimension> &normal,
    \n-
    365 const Field &weight,
    \n-
    366 Matrix &matrix) const
    \n-
    367 {
    \n-
    368 const unsigned int endRow = startRow+mVal.size();
    \n-
    369 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n-
    370 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n-
    371 {
    \n-
    372 Field cFactor = (*rtiter)*normal;
    \n-
    373 typename MVal::const_iterator miter = mVal.begin();
    \n-
    374 for (unsigned int row = startRow;
    \n-
    375 row!=endRow; ++miter, ++row )
    \n-
    376 {
    \n-
    377 matrix.add(row,col, (weight*cFactor)*(*miter) );
    \n-
    378 }
    \n-
    379 assert( miter == mVal.end() );
    \n-
    380 }
    \n-
    381 }
    \n-
    390 template <class MVal, class RTVal,class Matrix>
    \n-
    391 void fillInterior (unsigned int startRow,
    \n-
    392 const MVal &mVal,
    \n-
    393 const RTVal &rtVal,
    \n-
    394 Field weight,
    \n-
    395 Matrix &matrix) const
    \n-
    396 {
    \n-
    397 const unsigned int endRow = startRow+mVal.size()*dimension;
    \n-
    398 typename RTVal::const_iterator rtiter = rtVal.begin();
    \n-
    399 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)
    \n-
    400 {
    \n-
    401 typename MVal::const_iterator miter = mVal.begin();
    \n-
    402 for (unsigned int row = startRow;
    \n-
    403 row!=endRow; ++miter,row+=dimension )
    \n-
    404 {
    \n-
    405 for (unsigned int i=0; i<dimension; ++i)
    \n-
    406 {
    \n-
    407 matrix.add(row+i,col, (weight*(*miter))*(*rtiter)[i] );
    \n-
    408 }
    \n-
    409 }
    \n-
    410 assert( miter == mVal.end() );
    \n-
    411 }
    \n-
    412 }
    \n-
    413
    \n-
    414 Builder builder_;
    \n-
    415 std::size_t order_;
    \n-
    416 std::size_t size_;
    \n-
    417 };
    \n-
    \n-
    418
    \n-
    419 template < unsigned int dim, class Field >
    \n-
    \n-\n-
    421 {
    \n-\n-\n-
    424 typedef std::size_t Key;
    \n-
    425 typedef typename std::remove_const<Object>::type NonConstObject;
    \n-
    426
    \n-
    427 template <GeometryType::Id geometryId>
    \n-
    \n-
    428 static Object *create( const Key &key )
    \n-
    429 {
    \n-
    430 if ( !supports<geometryId>(key) )
    \n-
    431 return 0;
    \n-
    432 NonConstObject *interpol = new NonConstObject();
    \n-
    433 interpol->template build<geometryId>(key);
    \n-
    434 return interpol;
    \n-
    435 }
    \n-
    \n-
    436 template< GeometryType::Id geometryId >
    \n-
    \n-
    437 static bool supports ( const Key &key )
    \n-
    438 {
    \n-
    439 return GeometryType(geometryId).isSimplex();
    \n-
    440 }
    \n-
    \n-
    441 static void release( Object *object ) { delete object; }
    \n-
    442 };
    \n-
    \n-
    443
    \n-
    444} // namespace Dune
    \n-
    445
    \n-
    446#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_RAVIARTTHOMASSIMPLEX_RAVIARTTHOMASSIMPLEXINTERPOLATION_HH
    \n-\n-\n-\n-\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
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Definition nedelecsimplexinterpolation.hh:38
    \n-
    LocalCoefficientsContainer(const Setter &setter)
    Definition nedelecsimplexinterpolation.hh:43
    \n-
    const LocalKey & localKey(const unsigned int i) const
    Definition raviartthomassimplexinterpolation.hh:48
    \n-
    std::size_t size() const
    Definition nedelecsimplexinterpolation.hh:54
    \n-
    Definition orthonormalbasis.hh:20
    \n-
    static void release(Object *object)
    Definition orthonormalbasis.hh:57
    \n-
    Definition raviartthomassimplexinterpolation.hh:421
    \n-
    std::remove_const< Object >::type NonConstObject
    Definition raviartthomassimplexinterpolation.hh:425
    \n-
    static void release(Object *object)
    Definition raviartthomassimplexinterpolation.hh:441
    \n-
    static bool supports(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:437
    \n-
    static Object * create(const Key &key)
    Definition raviartthomassimplexinterpolation.hh:428
    \n-
    RTL2InterpolationBuilder< dim, Field > Builder
    Definition raviartthomassimplexinterpolation.hh:422
    \n-
    const RaviartThomasL2Interpolation< dim, Field > Object
    Definition raviartthomassimplexinterpolation.hh:423
    \n-
    std::size_t Key
    Definition raviartthomassimplexinterpolation.hh:424
    \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-
    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-
    const Normal & normal(unsigned int f) const
    Definition raviartthomassimplexinterpolation.hh:147
    \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:244
    \n-
    RaviartThomasL2Interpolation()
    Definition raviartthomassimplexinterpolation.hh:220
    \n-
    void interpolate(typename Base::template Helper< Func, Container, type > &func) const
    Definition raviartthomassimplexinterpolation.hh:283
    \n-
    auto interpolate(const Basis &basis, Matrix &matrix) const -> std::enable_if_t< std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::Field * >::value, void >
    Definition raviartthomassimplexinterpolation.hh:235
    \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:253
    \n-
    auto interpolate(const Function &function, Vector &coefficients) const -> std::enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void >::value, void >
    Definition raviartthomassimplexinterpolation.hh:226
    \n-
    std::size_t size() const
    Definition raviartthomassimplexinterpolation.hh:248
    \n-
    void setLocalKeys(std::vector< LocalKey > &keys) const
    Definition raviartthomassimplexinterpolation.hh:265
    \n-
    Definition interpolationhelper.hh:22
    \n-
    Definition interpolationhelper.hh:24
    \n-
    Definition polynomialbasis.hh:65
    \n-
    unsigned int size() const
    Definition polynomialbasis.hh:113
    \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,622 +1,81 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_RAVIARTTHOMAS2_CUBE2D_LOCALCOEFFICIENTS_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_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 \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-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+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 setter.setLocalKeys(localKey_);\n+45 return 24;\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+_\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-_\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-_\b2_\b2_\b6 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, Vector &coefficients ) const\n-227 -> std::enable_if_t< std::is_same< decltype(std::declval().resize\n-(1) ),void >::value,void>\n-228 {\n-229 coefficients.resize(_\bs_\bi_\bz_\be());\n-230 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-231 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-232 }\n-233\n-234 template< class Basis, class Matrix >\n-_\b2_\b3_\b5 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &matrix ) const\n-236 -> std::enable_if_t< std::is_same<\n-237 decltype(std::declval().rowPtr(0)), typename Matrix::Field* >::\n-value,void>\n-238 {\n-239 matrix.resize( _\bs_\bi_\bz_\be(), basis.size() );\n-240 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-241 _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(func);\n-242 }\n-243\n-_\b2_\b4_\b4 std::size_t _\bo_\br_\bd_\be_\br() const\n-245 {\n-246 return order_;\n-247 }\n-_\b2_\b4_\b8 std::size_t _\bs_\bi_\bz_\be() const\n-249 {\n-250 return size_;\n-251 }\n-252 template \n-_\b2_\b5_\b3 void _\bb_\bu_\bi_\bl_\bd( std::size_t _\bo_\br_\bd_\be_\br )\n-254 {\n-255 size_ = 0;\n-256 order_ = _\bo_\br_\bd_\be_\br;\n-257 builder_.template build(order_);\n-258 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-259 size_ += dimension*builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be();\n-260 for ( unsigned int f=0; f_\bs_\bi_\bz_\be();\n-263 }\n-264\n-_\b2_\b6_\b5 void _\bs_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\bs(std::vector< LocalKey > &keys) const\n-266 {\n-267 keys.resize(_\bs_\bi_\bz_\be());\n-268 unsigned int row = 0;\n-269 for (unsigned int f=0; f_\bs_\bi_\bz_\be(); ++i,++row)\n-273 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(f,1,i);\n-274 }\n-275 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-276 for (unsigned int i=0; i_\bs_\bi_\bz_\be()*dimension; ++i,++row)\n-277 keys[row] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,i);\n-278 assert( row == _\bs_\bi_\bz_\be() );\n-279 }\n-280\n-281 protected:\n-282 template< class Func, class Container, bool type >\n-_\b2_\b8_\b3 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-284 {\n-285 const Dune::GeometryType geoType = builder_._\bt_\by_\bp_\be();\n-286\n-287 std::vector< Field > testBasisVal;\n-288\n-289 for (unsigned int i=0; i<_\bs_\bi_\bz_\be(); ++i)\n-290 for (unsigned int j=0; j FaceQuadrature;\n-297 typedef Dune::QuadratureRules<_\bF_\bi_\be_\bl_\bd, dimension-1> FaceQuadratureRules;\n-298\n-299 const auto &refElement = Dune::ReferenceElements< Field, dimension >::\n-general( geoType );\n-300\n-301 for (unsigned int f=0; f_\bs_\bi_\bz_\be());\n-306\n-307 const auto &geometry = refElement.template geometry< 1 >( f );\n-308 const Dune::GeometryType subGeoType( geometry.type().id(), dimension-1 );\n-309 const FaceQuadrature &faceQuad = FaceQuadratureRules::rule( subGeoType,\n-2*order_+2 );\n-310\n-311 const unsigned int quadratureSize = faceQuad.size();\n-312 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-313 {\n-314 if (dimension>1)\n-315 builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->template evaluate<0>(faceQuad[qi].position\n-(),testBasisVal);\n-316 else\n-317 testBasisVal[0] = 1.;\n-318 fillBnd( row, testBasisVal,\n-319 func.evaluate( geometry.global( faceQuad[qi].position() ) ),\n-320 builder_._\bn_\bo_\br_\bm_\ba_\bl(f), faceQuad[qi].weight(),\n-321 func);\n-322 }\n-323\n-324 row += builder_._\bt_\be_\bs_\bt_\bF_\ba_\bc_\be_\bB_\ba_\bs_\bi_\bs(f)->_\bs_\bi_\bz_\be();\n-325 }\n-326 // element dofs\n-327 if (builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs())\n-328 {\n-329 testBasisVal.resize(builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be());\n-330\n-331 typedef Dune::QuadratureRule Quadrature;\n-332 typedef Dune::QuadratureRules QuadratureRules;\n-333 const Quadrature &elemQuad = QuadratureRules::rule( geoType, 2*order_+1 );\n-334\n-335 const unsigned int quadratureSize = elemQuad.size();\n-336 for( unsigned int qi = 0; qi < quadratureSize; ++qi )\n-337 {\n-338 builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->template evaluate<0>(elemQuad[qi].position\n-(),testBasisVal);\n-339 fillInterior( row, testBasisVal,\n-340 func.evaluate(elemQuad[qi].position()),\n-341 elemQuad[qi].weight(),\n-342 func );\n-343 }\n-344\n-345 row += builder_._\bt_\be_\bs_\bt_\bB_\ba_\bs_\bi_\bs()->_\bs_\bi_\bz_\be()*dimension;\n-346 }\n-347 assert(row==_\bs_\bi_\bz_\be());\n-348 }\n-349\n-350 private:\n-360 template \n-361 void fillBnd (unsigned int startRow,\n-362 const MVal &mVal,\n-363 const RTVal &rtVal,\n-364 const FieldVector &normal,\n-365 const _\bF_\bi_\be_\bl_\bd &weight,\n-366 Matrix &matrix) const\n-367 {\n-368 const unsigned int endRow = startRow+mVal.size();\n-369 typename RTVal::const_iterator rtiter = rtVal.begin();\n-370 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n-371 {\n-372 _\bF_\bi_\be_\bl_\bd cFactor = (*rtiter)*normal;\n-373 typename MVal::const_iterator miter = mVal.begin();\n-374 for (unsigned int row = startRow;\n-375 row!=endRow; ++miter, ++row )\n-376 {\n-377 matrix.add(row,col, (weight*cFactor)*(*miter) );\n-378 }\n-379 assert( miter == mVal.end() );\n-380 }\n-381 }\n-390 template \n-391 void fillInterior (unsigned int startRow,\n-392 const MVal &mVal,\n-393 const RTVal &rtVal,\n-394 _\bF_\bi_\be_\bl_\bd weight,\n-395 Matrix &matrix) const\n-396 {\n-397 const unsigned int endRow = startRow+mVal.size()*dimension;\n-398 typename RTVal::const_iterator rtiter = rtVal.begin();\n-399 for ( unsigned int col = 0; col < rtVal.size() ; ++rtiter,++col)\n-400 {\n-401 typename MVal::const_iterator miter = mVal.begin();\n-402 for (unsigned int row = startRow;\n-403 row!=endRow; ++miter,row+=dimension )\n-404 {\n-405 for (unsigned int i=0; i\n-_\b4_\b2_\b0 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-421 {\n-_\b4_\b2_\b2 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_\b3 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_\b4 typedef std::size_t _\bK_\be_\by;\n-_\b4_\b2_\b5 typedef typename std::remove_const::type _\bN_\bo_\bn_\bC_\bo_\bn_\bs_\bt_\bO_\bb_\bj_\be_\bc_\bt;\n-426\n-427 template \n-_\b4_\b2_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be( const _\bK_\be_\by &key )\n-429 {\n-430 if ( !supports(key) )\n-431 return 0;\n-432 _\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-433 interpol->template build(key);\n-434 return interpol;\n-435 }\n-436 template< GeometryType::Id geometryId >\n-_\b4_\b3_\b7 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n-438 {\n-439 return GeometryType(geometryId).isSimplex();\n-440 }\n-_\b4_\b4_\b1 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object ) { delete object; }\n-442 };\n-443\n-444} // namespace Dune\n-445\n-446#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-_\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+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:_\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:23\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:38\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:43\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+_\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-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn nedelecsimplexinterpolation.hh:54\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:421\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: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:_\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:441\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:437\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:428\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:422\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: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:_\bK_\be_\by\n-std::size_t Key\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_\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:_\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:_\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:_\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:244\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:283\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-auto interpolate(const Basis &basis, Matrix &matrix) const -> std::enable_if_t<\n-std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::\n-Field * >::value, void >\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:235\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:253\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-auto interpolate(const Function &function, Vector &coefficients) const -> std::\n-enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void\n->::value, void >\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomassimplexinterpolation.hh:226\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:248\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:265\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:22\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:24\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+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 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/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: raviartthomas1cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: raviartthomas2cube2dlocalinterpolation.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-
    raviartthomas1cube2dlocalinterpolation.hh File Reference
    \n+
    raviartthomas2cube2dlocalinterpolation.hh File Reference
    \n
    \n
    \n
    #include <vector>
    \n #include <dune/geometry/quadraturerules.hh>
    \n #include <dune/localfunctions/common/localinterpolation.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::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,24 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas1cube2dlocalinterpolation.hh File Reference\n+raviartthomas2cube2dlocalinterpolation.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_\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_\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:_\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/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: raviartthomas1cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: raviartthomas2cube2dlocalinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,126 +70,139 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas1cube2dlocalinterpolation.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 (C) 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_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n
    7
    \n
    8#include <vector>
    \n
    9
    \n
    10#include <dune/geometry/quadraturerules.hh>
    \n \n
    12
    \n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16
    \n-
    25 template<class LB>
    \n-
    \n-\n-
    27 {
    \n-
    28
    \n-
    29 public:
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    24 template<class LB>
    \n+
    \n+\n+
    26 {
    \n+
    27
    \n+
    28 public:
    \n+
    29
    \n
    \n-
    35 RT1Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n+
    35 RT2Cube2DLocalInterpolation (std::bitset<4> s = 0)
    \n
    36 {
    \n
    37 for (size_t i=0; i<4; i++)
    \n
    38 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n
    39
    \n
    40 n_[0] = {-1.0, 0.0};
    \n
    41 n_[1] = { 1.0, 0.0};
    \n
    42 n_[2] = { 0.0, -1.0};
    \n
    43 n_[3] = { 0.0, 1.0};
    \n
    44 }
    \n
    \n
    45
    \n-
    54 template<class F, class C>
    \n+
    54 template<typename F, typename C>
    \n
    \n-
    55 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    55 void interpolate (const F& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n
    62
    \n-
    63 out.resize(12);
    \n+
    63 out.resize(24);
    \n
    64 fill(out.begin(), out.end(), 0.0);
    \n
    65
    \n-
    66 const int qOrder = 3;
    \n+
    66 const int qOrder = 6;
    \n
    67 const auto& rule1 = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n
    68
    \n
    69 for (auto&& qp : rule1)
    \n
    70 {
    \n
    71 Scalar qPos = qp.position();
    \n-
    72 typename LB::Traits::DomainType localPos = {0.0, qPos};
    \n+
    72 typename LB::Traits::DomainType localPos;
    \n
    73
    \n-
    74 auto y = f(localPos);
    \n-
    75 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n-
    76 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    77
    \n-
    78 localPos = {1.0, qPos};
    \n-
    79 y = f(localPos);
    \n-
    80 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n-
    81 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    82
    \n-
    83 localPos = {qPos, 0.0};
    \n-
    84 y = f(localPos);
    \n-
    85 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n-
    86 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n-
    87
    \n-
    88 localPos = {qPos, 1.0};
    \n-
    89 y = f(localPos);
    \n-
    90 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n-
    91 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n-
    92 }
    \n-
    93
    \n-
    94 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    95
    \n-
    96 for (auto&& qp : rule2)
    \n-
    97 {
    \n-
    98 auto qPos = qp.position();
    \n-
    99
    \n-
    100 auto y = f(qPos);
    \n-
    101 out[8] += y[0]*qp.weight();
    \n-
    102 out[9] += y[1]*qp.weight();
    \n-
    103 out[10] += y[0]*qPos[1]*qp.weight();
    \n-
    104 out[11] += y[1]*qPos[0]*qp.weight();
    \n-
    105 }
    \n-
    106 }
    \n-
    \n-
    107
    \n-
    108 private:
    \n-
    109 // Edge orientations
    \n-
    110 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n-
    111
    \n-
    112 // Edge normals
    \n-
    113 std::array<typename LB::Traits::DomainType, 4> n_;
    \n-
    114 };
    \n+
    74 localPos = {0.0, qPos};
    \n+
    75 auto y = f(localPos);
    \n+
    76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];
    \n+
    77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    78 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+
    79
    \n+
    80 localPos = {1.0, qPos};
    \n+
    81 y = f(localPos);
    \n+
    82 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];
    \n+
    83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    84 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+
    85
    \n+
    86 localPos = {qPos, 0.0};
    \n+
    87 y = f(localPos);
    \n+
    88 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];
    \n+
    89 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();
    \n+
    90 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+
    91
    \n+
    92 localPos = {qPos, 1.0};
    \n+
    93 y = f(localPos);
    \n+
    94 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];
    \n+
    95 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();
    \n+
    96 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+
    97 }
    \n+
    98
    \n+
    99 const auto& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n+
    100
    \n+
    101 for (auto&& qp : rule2)
    \n+
    102 {
    \n+
    103 FieldVector<double,2> qPos = qp.position();
    \n+
    104
    \n+
    105 auto y = f(qPos);
    \n+
    106 out[12] += y[0]*qp.weight();
    \n+
    107 out[13] += y[1]*qp.weight();
    \n+
    108 out[14] += y[0]*qPos[0]*qp.weight();
    \n+
    109 out[15] += y[1]*qPos[0]*qp.weight();
    \n+
    110 out[16] += y[0]*qPos[1]*qp.weight();
    \n+
    111 out[17] += y[1]*qPos[1]*qp.weight();
    \n+
    112 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();
    \n+
    113 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();
    \n+
    114 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();
    \n+
    115 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();
    \n+
    116 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();
    \n+
    117 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();
    \n+
    118 }
    \n+
    119 }
    \n+
    \n+
    120
    \n+
    121 private:
    \n+
    122 // Edge orientations
    \n+
    123 std::array<typename LB::Traits::RangeFieldType, 4> sign_;
    \n+
    124
    \n+
    125 // Edge normals
    \n+
    126 std::array<typename LB::Traits::DomainType, 4> n_;
    \n+
    127 };
    \n
    \n-
    115}
    \n-
    116#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    128}
    \n+
    129#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas1cube2dlocalinterpolation.hh:27
    \n-
    RT1Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas1cube2dlocalinterpolation.hh:35
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas1cube2dlocalinterpolation.hh:55
    \n+
    Second order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas2cube2dlocalinterpolation.hh:26
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas2cube2dlocalinterpolation.hh:55
    \n+
    RT2Cube2DLocalInterpolation(std::bitset< 4 > s=0)
    Make set number s, where 0 <= s < 16.
    Definition raviartthomas2cube2dlocalinterpolation.hh:35
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,125 +1,142 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALINTERPOLATION_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n 12\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16\n-25 template\n-_\b2_\b6 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-27 {\n-28\n-29 public:\n-_\b3_\b5 _\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+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+24 template\n+_\b2_\b5 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+26 {\n+27\n+28 public:\n+29\n+_\b3_\b5 _\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 36 {\n 37 for (size_t i=0; i<4; i++)\n 38 sign_[i] = (s[i]) ? -1.0 : 1.0;\n 39\n 40 n_[0] = {-1.0, 0.0};\n 41 n_[1] = { 1.0, 0.0};\n 42 n_[2] = { 0.0, -1.0};\n 43 n_[3] = { 0.0, 1.0};\n 44 }\n 45\n-54 template\n+54 template\n _\b5_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, 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 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n 62\n-63 out.resize(12);\n+63 out.resize(24);\n 64 fill(out.begin(), out.end(), 0.0);\n 65\n-66 const int qOrder = 3;\n+66 const int qOrder = 6;\n 67 const auto& rule1 = QuadratureRules::rule(GeometryTypes::cube(1),\n qOrder);\n 68\n 69 for (auto&& qp : rule1)\n 70 {\n 71 Scalar qPos = qp.position();\n-72 typename LB::Traits::DomainType localPos = {0.0, qPos};\n+72 typename LB::Traits::DomainType localPos;\n 73\n-74 auto y = f(localPos);\n-75 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n-76 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n-77\n-78 localPos = {1.0, qPos};\n-79 y = f(localPos);\n-80 out[2] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n-81 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n-82\n-83 localPos = {qPos, 0.0};\n-84 y = f(localPos);\n-85 out[4] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n-86 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n-87\n-88 localPos = {qPos, 1.0};\n-89 y = f(localPos);\n-90 out[6] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n-91 out[7] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n-92 }\n-93\n-94 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n+74 localPos = {0.0, qPos};\n+75 auto y = f(localPos);\n+76 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0];\n+77 out[1] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight();\n+78 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+79\n+80 localPos = {1.0, qPos};\n+81 y = f(localPos);\n+82 out[3] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1];\n+83 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight();\n+84 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+85\n+86 localPos = {qPos, 0.0};\n+87 y = f(localPos);\n+88 out[6] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2];\n+89 out[7] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(1.0 - 2.0*qPos)*qp.weight();\n+90 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+91\n+92 localPos = {qPos, 1.0};\n+93 y = f(localPos);\n+94 out[9] += (y[0]*n_[3][0] + y[1]*n_[3][1])*qp.weight()*sign_[3];\n+95 out[10] += (y[0]*n_[3][0] + y[1]*n_[3][1])*(2.0*qPos - 1.0)*qp.weight();\n+96 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+97 }\n+98\n+99 const auto& rule2 = QuadratureRules::rule(GeometryTypes::cube(2),\n qOrder);\n-95\n-96 for (auto&& qp : rule2)\n-97 {\n-98 auto qPos = qp.position();\n-99\n-100 auto y = f(qPos);\n-101 out[8] += y[0]*qp.weight();\n-102 out[9] += y[1]*qp.weight();\n-103 out[10] += y[0]*qPos[1]*qp.weight();\n-104 out[11] += y[1]*qPos[0]*qp.weight();\n-105 }\n-106 }\n-107\n-108 private:\n-109 // Edge orientations\n-110 std::array sign_;\n-111\n-112 // Edge normals\n-113 std::array n_;\n-114 };\n-115}\n-116#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALINTERPOLATION_HH\n+100\n+101 for (auto&& qp : rule2)\n+102 {\n+103 FieldVector qPos = qp.position();\n+104\n+105 auto y = f(qPos);\n+106 out[12] += y[0]*qp.weight();\n+107 out[13] += y[1]*qp.weight();\n+108 out[14] += y[0]*qPos[0]*qp.weight();\n+109 out[15] += y[1]*qPos[0]*qp.weight();\n+110 out[16] += y[0]*qPos[1]*qp.weight();\n+111 out[17] += y[1]*qPos[1]*qp.weight();\n+112 out[18] += y[0]*qPos[0]*qPos[1]*qp.weight();\n+113 out[19] += y[1]*qPos[0]*qPos[1]*qp.weight();\n+114 out[20] += y[0]*qPos[1]*qPos[1]*qp.weight();\n+115 out[21] += y[1]*qPos[0]*qPos[0]*qp.weight();\n+116 out[22] += y[0]*qPos[0]*qPos[1]*qPos[1]*qp.weight();\n+117 out[23] += y[1]*qPos[0]*qPos[0]*qPos[1]*qp.weight();\n+118 }\n+119 }\n+120\n+121 private:\n+122 // Edge orientations\n+123 std::array sign_;\n+124\n+125 // Edge normals\n+126 std::array n_;\n+127 };\n+128}\n+129#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:_\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:27\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:35\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:_\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:26\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 &ff, 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:55\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas2cube2dlocalinterpolation.hh:55\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:35\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/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: raviartthomas1cube2dlocalcoefficients.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-
    raviartthomas1cube2dlocalcoefficients.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::RT1Cube2DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on quadrilaterals. 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.9.0\n Loading...\n Searching...\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+ * _\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-raviartthomas1cube2dlocalcoefficients.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:_\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:_\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/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: raviartthomas1cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas2cube2dlocalbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,83 +70,300 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube2dlocalcoefficients.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 (C) 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_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 < 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+
    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 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-
    57}
    \n-
    58#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALCOEFFICIENTS_HH
    \n+
    282}
    \n+
    283#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS2_CUBE2D_LOCALBASIS_HH
    \n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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,81 +1,437 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_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 _\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+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 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:_\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:23\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+_\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:34\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:42\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/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: raviartthomas1cube2dlocalbasis.hh File Reference\n+dune-localfunctions: raviartthomas02d.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+
    raviartthomas02d.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::RT1Cube2DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference quadrilateral. More...
    class  Dune::RT02DLocalFiniteElement< D, R >
     Zero 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,25 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+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_\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:_\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 ===============================================================================\n 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: raviartthomas1cube2dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas02d.hh Source File\n \n \n \n \n \n \n \n@@ -70,200 +70,125 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube2dlocalbasis.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 (C) 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_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_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+\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+
    27 class
    \n+\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+\n+\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+
    \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 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+
    60 return interpolation;
    \n+
    61 }
    \n
    \n-
    182}
    \n-
    183#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS1_CUBE2D_LOCALBASIS_HH
    \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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    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+
    Lowest order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas02dlocalbasis.hh:26
    \n+
    Layout map for RT0 elements.
    Definition raviartthomas02dlocalcoefficients.hh:24
    \n+
    Definition raviartthomas02dlocalinterpolation.hh:18
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,219 +1,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS02DLOCALFINITEELEMENT_HH\n+6#define DUNE_RAVIARTTHOMAS02DLOCALFINITEELEMENT_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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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 _\bR_\bT_\b1_\bC_\bu_\bb_\be_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-28 {\n-29\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 _\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+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_\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+_\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 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+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+_\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+_\bl_\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:34\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:42\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+_\bD_\bu_\bn_\be_\b:_\b:_\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-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+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+Lowest order Raviart-Thomas shape functions on the reference triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:26\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+Layout map for RT0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.hh:24\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:18\n ===============================================================================\n 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: raviartthomas12d.hh File Reference\n+dune-localfunctions: raviartthomas4cube2d.hh File Reference\n \n \n \n \n \n \n \n@@ -72,29 +72,29 @@\n
  • dune
  • localfunctions
  • raviartthomas
  • \n \n \n
    \n \n-
    raviartthomas12d.hh File Reference
    \n+
    raviartthomas4cube2d.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::RT12DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on triangles. 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": "@@ -2,23 +2,23 @@\n Loading...\n Searching...\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+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_\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+#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:_\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+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/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: raviartthomas12d.hh Source File\n+dune-localfunctions: raviartthomas4cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -74,120 +74,119 @@\n \n \n
    \n
    \n-
    raviartthomas12d.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 (C) 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_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_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-
    17
    \n-
    26 template<class D, class R>
    \n-
    \n-
    27 class
    \n-\n+
    27 template<class D, class R>
    \n+
    \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+\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
    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:26
    \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:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_RAVIARTTHOMAS4_CUBE2D_LOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS4_CUBE2D_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_\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+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-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+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\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_\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-_\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+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_\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_\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 _\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+_\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 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+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 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+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 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:26\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: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/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: raviartthomas02dlocalcoefficients.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-
    raviartthomas02dlocalcoefficients.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::RT02DLocalCoefficients
     Layout map for RT0 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.9.0\n Loading...\n Searching...\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-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/_\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_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n-\u00a0 Layout map for RT0 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/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: raviartthomas02dlocalcoefficients.hh Source File\n+dune-localfunctions: raviartthomas3cube2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,123 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas02dlocalcoefficients.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 (C) 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+
    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-
    \n-\n-
    24 {
    \n-
    25 public:
    \n-
    \n-\n-
    28 {
    \n-
    29 for (std::size_t i=0; i<3; i++)
    \n-
    30 li[i] = LocalKey(i,1,0);
    \n-
    31 }
    \n-
    \n-
    32
    \n-
    \n-
    34 std::size_t size () const
    \n-
    35 {
    \n-
    36 return 3;
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    \n-
    40 const LocalKey& localKey (std::size_t i) const
    \n-
    41 {
    \n-
    42 return li[i];
    \n-
    43 }
    \n-
    \n-
    44
    \n-
    45 private:
    \n-
    46 std::vector<LocalKey> li;
    \n-
    47 };
    \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+
    40
    \n+
    \n+\n+
    47 basis(s),
    \n+
    48 interpolation(s)
    \n+
    49 {}
    \n
    \n-
    48
    \n-
    49}
    \n
    50
    \n-
    51#endif
    \n-\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
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Layout map for RT0 elements.
    Definition raviartthomas02dlocalcoefficients.hh:24
    \n-
    RT02DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas02dlocalcoefficients.hh:27
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas02dlocalcoefficients.hh:40
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas02dlocalcoefficients.hh:34
    \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:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,76 +1,136 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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+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-_\b2_\b3 class _\bR_\bT_\b0_\b2_\bD_\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 _\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-28 {\n-29 for (std::size_t i=0; i<3; i++)\n-30 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-31 }\n-32\n-_\b3_\b4 std::size_t _\bs_\bi_\bz_\be () const\n-35 {\n-36 return 3;\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 return li[i];\n-43 }\n-44\n-45 private:\n-46 std::vector li;\n-47 };\n-48\n-49}\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+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#endif\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\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_\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+_\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 _\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:23\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-Layout map for RT0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalcoefficients.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_\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+_\bD_\bu_\bn_\be_\b:_\b:_\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 raviartthomas02dlocalcoefficients.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_\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:40\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:34\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: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/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: raviartthomas02dlocalbasis.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-
    raviartthomas02dlocalbasis.hh File Reference
    \n+
    raviartthomas12d.hh File Reference
    \n
    \n
    \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 Classes

    class  Dune::RT02DLocalBasis< D, R >
     Lowest order Raviart-Thomas shape functions on the reference triangle. 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.9.0\n Loading...\n Searching...\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-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+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:_\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 Lowest 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:_\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: raviartthomas02dlocalbasis.hh Source File\n+dune-localfunctions: raviartthomas12d.hh Source File\n \n \n \n \n \n \n \n@@ -70,138 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas02dlocalbasis.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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <numeric>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/common/fmatrix.hh>
    \n-
    11
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    24 template<class D, class R>
    \n-
    \n-\n-
    26 {
    \n-
    27 public:
    \n-
    28 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,2,Dune::FieldVector<R,2>,
    \n-
    29 Dune::FieldMatrix<R,2,2> > Traits;
    \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-
    \n-
    32 RT02DLocalBasis (std::bitset<3> s = 0)
    \n-
    33 {
    \n-
    34 for (int i=0; i<3; i++)
    \n-
    35 sign_[i] = s[i] ? -1.0 : 1.0;
    \n-
    36 }
    \n-
    \n-
    37
    \n-
    \n-
    39 unsigned int size () const
    \n-
    40 {
    \n-
    41 return 3;
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-
    45 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n-
    46 std::vector<typename Traits::RangeType>& out) const
    \n-
    47 {
    \n-
    48 out.resize(3);
    \n-
    49 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};
    \n-
    50 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};
    \n-
    51 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};
    \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-
    55 inline void
    \n-
    \n-
    56 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n-
    57 std::vector<typename Traits::JacobianType>& out) const // return value
    \n-
    58 {
    \n-
    59 out.resize(3);
    \n-
    60 for (int i=0; i<3; i++)
    \n-
    61 {
    \n-
    62 out[i][0] = {sign_[i], 0};
    \n-
    63 out[i][1] = { 0, sign_[i]};
    \n-
    64 }
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    \n-
    68 void partial (const std::array<unsigned int, 2>& order,
    \n-
    69 const typename Traits::DomainType& in, // position
    \n-
    70 std::vector<typename Traits::RangeType>& out) const // return value
    \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 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n-
    73 if (totalOrder == 0) {
    \n-
    74 evaluateFunction(in, out);
    \n-
    75 } else if (totalOrder == 1) {
    \n-
    76 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n-
    77 out.resize(size());
    \n-
    78
    \n-
    79 for (int i=0; i<3; i++)
    \n-
    80 {
    \n-
    81 out[i][direction] = sign_[i];
    \n-
    82 out[i][1-direction] = 0;
    \n-
    83 }
    \n-
    84 } else {
    \n-
    85 out.resize(size());
    \n-
    86 for (std::size_t i = 0; i < size(); ++i)
    \n-
    87 for (std::size_t j = 0; j < 2; ++j)
    \n-
    88 out[i][j] = 0;
    \n-
    89 }
    \n-
    90
    \n-
    91 }
    \n-
    \n-
    92
    \n-
    \n-
    94 unsigned int order () const
    \n-
    95 {
    \n-
    96 return 1;
    \n-
    97 }
    \n-
    \n-
    98
    \n-
    99 private:
    \n-
    100
    \n-
    101 // Signs of the edge normals
    \n-
    102 std::array<R,3> sign_;
    \n-
    103 };
    \n+
    72 return GeometryTypes::triangle;
    \n+
    73 }
    \n
    \n-
    104}
    \n-
    105#endif
    \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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Lowest order Raviart-Thomas shape functions on the reference triangle.
    Definition raviartthomas02dlocalbasis.hh:26
    \n-
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition raviartthomas02dlocalbasis.hh:94
    \n-
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition raviartthomas02dlocalbasis.hh:56
    \n-
    LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 2, Dune::FieldVector< R, 2 >, Dune::FieldMatrix< R, 2, 2 > > Traits
    Definition raviartthomas02dlocalbasis.hh:29
    \n-
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition raviartthomas02dlocalbasis.hh:45
    \n-
    unsigned int size() const
    number of shape functions
    Definition raviartthomas02dlocalbasis.hh:39
    \n-
    RT02DLocalBasis(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas02dlocalbasis.hh:32
    \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:68
    \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+
    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:26
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,150 +1,137 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_HH\n+6#define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALFINITEELEMENT_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_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-24 template\n-_\b2_\b5 class _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\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<_\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-_\b2_\b9 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\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-_\b3_\b2 _\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs (std::bitset<3> s = 0)\n-33 {\n-34 for (int i=0; i<3; i++)\n-35 sign_[i] = s[i] ? -1.0 : 1.0;\n-36 }\n-37\n-_\b3_\b9 unsigned int _\bs_\bi_\bz_\be () const\n-40 {\n-41 return 3;\n-42 }\n-43\n-_\b4_\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-46 std::vector& out) const\n-47 {\n-48 out.resize(3);\n-49 out[0] = {sign_[0]*in[0], sign_[0]*(in[1]-D(1))};\n-50 out[1] = {sign_[1]*(in[0]-D(1)), sign_[1]*in[1]};\n-51 out[2] = {sign_[2]*in[0], sign_[2]*in[1]};\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-55 inline void\n-_\b5_\b6 _\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-57 std::vector& out) const // return value\n-58 {\n-59 out.resize(3);\n-60 for (int i=0; i<3; i++)\n-61 {\n-62 out[i][0] = {sign_[i], 0};\n-63 out[i][1] = { 0, sign_[i]};\n-64 }\n-65 }\n-66\n-_\b6_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& _\bo_\br_\bd_\be_\br,\n-69 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n-70 std::vector& out) const // return value\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 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n-73 if (totalOrder == 0) {\n-74 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n-75 } else if (totalOrder == 1) {\n-76 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-77 out.resize(_\bs_\bi_\bz_\be());\n-78\n-79 for (int i=0; i<3; i++)\n-80 {\n-81 out[i][direction] = sign_[i];\n-82 out[i][1-direction] = 0;\n-83 }\n-84 } else {\n-85 out.resize(_\bs_\bi_\bz_\be());\n-86 for (std::size_t i = 0; i < _\bs_\bi_\bz_\be(); ++i)\n-87 for (std::size_t j = 0; j < 2; ++j)\n-88 out[i][j] = 0;\n-89 }\n-90\n-91 }\n-92\n-_\b9_\b4 unsigned int _\bo_\br_\bd_\be_\br () const\n-95 {\n-96 return 1;\n-97 }\n-98\n-99 private:\n-100\n-101 // Signs of the edge normals\n-102 std::array sign_;\n-103 };\n-104}\n-105#endif\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_\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:34\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:42\n-_\bD_\bu_\bn_\be_\b:_\b:_\bR_\bT_\b0_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n-Lowest order Raviart-Thomas shape functions on the reference triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:26\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:94\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:56\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:29\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:45\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+_\bD_\bu_\bn_\be_\b:_\b:_\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\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalbasis.hh:39\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+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 raviartthomas02dlocalbasis.hh:32\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:68\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 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: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/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: raviartthomas02dlocalinterpolation.hh File Reference\n+dune-localfunctions: pk3d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,38 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    raviartthomas02dlocalinterpolation.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    pk3d.hh File Reference
    \n \n
    \n-
    #include <cmath>
    \n-#include <array>
    \n-#include <bitset>
    \n-#include <vector>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n+\n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::RT02DLocalInterpolation< LB >
     
    \n \n \n \n+

    \n Namespaces

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

    \n+Typedefs

    template<class D , class R , unsigned int k>
    using Dune::Pk3DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 3, k >
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,21 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-raviartthomas02dlocalinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+pk3d.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/_\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:_\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n+ 3, k >\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: raviartthomas02dlocalinterpolation.hh Source File\n+dune-localfunctions: pk3d.hh Source File\n \n \n \n \n \n \n \n@@ -70,97 +70,46 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas02dlocalinterpolation.hh
    \n+
    pk3d.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 (C) 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_Pk3DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_Pk3DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cmath>
    \n-
    9#include <array>
    \n-
    10#include <bitset>
    \n-
    11#include <vector>
    \n-\n-
    13
    \n-
    14namespace Dune
    \n-
    15{
    \n-
    16 template<class LB>
    \n-
    \n-\n-
    18 {
    \n-
    19 public:
    \n-
    20
    \n-
    \n-
    22 RT02DLocalInterpolation (std::bitset<3> s = 0)
    \n-
    23 {
    \n-
    24 using std::sqrt;
    \n-
    25 for (std::size_t i=0; i<sign_.size(); i++)
    \n-
    26 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    27
    \n-
    28 m_[0] = {0.5, 0.0};
    \n-
    29 m_[1] = {0.0, 0.5};
    \n-
    30 m_[2] = {0.5, 0.5};
    \n-
    31 n_[0] = {0.0, -1.0};
    \n-
    32 n_[1] = {-1.0, 0.0};
    \n-
    33 n_[2] = {1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n-
    34 c_[0] = ( 0.5*n_[0][0] - 1.0*n_[0][1]);
    \n-
    35 c_[1] = (-1.0*n_[1][0] + 0.5*n_[1][1]);
    \n-
    36 c_[2] = ( 0.5*n_[2][0] + 0.5*n_[2][1]);
    \n-
    37 }
    \n-
    \n-
    38
    \n-
    39 template<typename F, typename C>
    \n-
    \n-
    40 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    41 {
    \n-
    42 // f gives v*outer normal at a point on the edge!
    \n-
    43 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    44
    \n-
    45 out.resize(3);
    \n-
    46
    \n-
    47 for (int i=0; i<3; i++)
    \n-
    48 {
    \n-
    49 auto y = f(m_[i]);
    \n-
    50 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];
    \n-
    51 }
    \n-
    52 }
    \n-
    \n-
    53
    \n-
    54 private:
    \n-
    55 // Edge orientations
    \n-
    56 std::array<typename LB::Traits::RangeFieldType,3> sign_;
    \n-
    57 // Edge midpoints of the reference triangle
    \n-
    58 std::array<typename LB::Traits::DomainType,3> m_;
    \n-
    59 // Unit outer normals of the reference triangle
    \n-
    60 std::array<typename LB::Traits::DomainType,3> n_;
    \n-
    61 // Inverse triangle edge length
    \n-
    62 std::array<typename LB::Traits::RangeFieldType,3> c_;
    \n-
    63 };
    \n-
    \n-
    64}
    \n-
    65
    \n-
    66#endif
    \n+\n+
    9
    \n+
    10#warning This header is deprecated
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    19 template<class D, class R, unsigned int k>
    \n+\n+
    21 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n+\n+
    23
    \n+
    24}
    \n+
    25
    \n+
    26#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Definition raviartthomas02dlocalinterpolation.hh:18
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas02dlocalinterpolation.hh:40
    \n-
    RT02DLocalInterpolation(std::bitset< 3 > s=0)
    Constructor with given set of edge orientations.
    Definition raviartthomas02dlocalinterpolation.hh:22
    \n-\n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,91 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+pk3d.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 (C) 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_Pk3DLOCALFINITEELEMENT_HH\n+6#define DUNE_Pk3DLOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-13\n-14namespace _\bD_\bu_\bn_\be\n-15{\n-16 template\n-_\b1_\b7 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-18 {\n-19 public:\n-20\n-_\b2_\b2 _\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-23 {\n-24 using std::sqrt;\n-25 for (std::size_t i=0; i\n-_\b4_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-41 {\n-42 // f gives v*outer normal at a point on the edge!\n-43 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-44\n-45 out.resize(3);\n-46\n-47 for (int i=0; i<3; i++)\n-48 {\n-49 auto y = f(m_[i]);\n-50 out[i] = (y[0]*n_[i][0]+y[1]*n_[i][1])*sign_[i]/c_[i];\n-51 }\n-52 }\n-53\n-54 private:\n-55 // Edge orientations\n-56 std::array sign_;\n-57 // Edge midpoints of the reference triangle\n-58 std::array m_;\n-59 // Unit outer normals of the reference triangle\n-60 std::array n_;\n-61 // Inverse triangle edge length\n-62 std::array c_;\n-63 };\n-64}\n-65\n-66#endif\n+8#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+9\n+10#warning This header is deprecated\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+19 template\n+_\b2_\b0 using _\bP_\bk_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+21 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n+22 = _\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,_\b3_\b,_\bk_\b>;\n+23\n+24}\n+25\n+26#endif\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_\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: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_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void interpolate(const F &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas02dlocalinterpolation.hh:40\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:22\n-_\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_\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:838\n ===============================================================================\n 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: raviartthomas0cube2d.hh File Reference\n+dune-localfunctions: lagrangeprism.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-
    raviartthomas0cube2d.hh File Reference
    \n+
    lagrangeprism.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 <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/localinterpolation.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::RT0Cube2DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on rectangles. 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,22 +1,30 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-#include \n+lagrangeprism.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 \"_\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/_\bc_\bo_\bm_\bm_\bo_\bn_\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_\bn_\be_\b/_\bl_\bo_\bc_\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+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/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: raviartthomas0cube2d.hh Source File\n+dune-localfunctions: lagrangeprism.hh Source File\n \n \n \n \n \n \n \n@@ -70,119 +70,695 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas0cube2d.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 (C) 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_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \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+
    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+\n+
    21
    \n+
    22namespace Dune { namespace Impl
    \n+
    23{
    \n+
    33 template<class D, class R, unsigned int k>
    \n+
    34 class LagrangePrismLocalBasis
    \n+
    35 {
    \n+
    36 static constexpr std::size_t dim = 3;
    \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-
    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::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+
    42 static constexpr unsigned int size ()
    \n+
    43 {
    \n+
    44 return binomial(k+2,2u) * (k+1);
    \n+
    45 }
    \n+
    46
    \n+
    48 void evaluateFunction(const typename Traits::DomainType& in,
    \n+
    49 std::vector<typename Traits::RangeType>& out) const
    \n+
    50 {
    \n+
    51 out.resize(size());
    \n+
    52
    \n+
    53 // Specialization for zero-order case
    \n+
    54 if (k==0)
    \n+
    55 {
    \n+
    56 out[0] = 1;
    \n+
    57 return;
    \n+
    58 }
    \n+
    59
    \n+
    60 if (k==1)
    \n+
    61 {
    \n+
    62 out[0] = (1.0-in[0]-in[1])*(1.0-in[2]);
    \n+
    63 out[1] = in[0]*(1-in[2]);
    \n+
    64 out[2] = in[1]*(1-in[2]);
    \n+
    65 out[3] = in[2]*(1.0-in[0]-in[1]);
    \n+
    66 out[4] = in[0]*in[2];
    \n+
    67 out[5] = in[1]*in[2];
    \n+
    68
    \n+
    69 return;
    \n+
    70 }
    \n+
    71
    \n+
    72 if (k==2)
    \n+
    73 {
    \n+
    74 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    75 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    76 segmentShapeFunction[1] = in[2] * (4 - 4*in[2]);
    \n+
    77 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    78
    \n+
    79 FieldVector<R, 6> triangleShapeFunction;
    \n+
    80 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n+
    81 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n+
    82 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n+
    83 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n+
    84 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n+
    85 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n+
    86
    \n+
    87 // lower triangle:
    \n+
    88 out[0] = triangleShapeFunction[0] * segmentShapeFunction[0];
    \n+
    89 out[1] = triangleShapeFunction[1] * segmentShapeFunction[0];
    \n+
    90 out[2] = triangleShapeFunction[2] * segmentShapeFunction[0];
    \n+
    91
    \n+
    92 //upper triangle
    \n+
    93 out[3] = triangleShapeFunction[0] * segmentShapeFunction[2];
    \n+
    94 out[4] = triangleShapeFunction[1] * segmentShapeFunction[2];
    \n+
    95 out[5] = triangleShapeFunction[2] * segmentShapeFunction[2];
    \n+
    96
    \n+
    97 // vertical edges
    \n+
    98 out[6] = triangleShapeFunction[0] * segmentShapeFunction[1];
    \n+
    99 out[7] = triangleShapeFunction[1] * segmentShapeFunction[1];
    \n+
    100 out[8] = triangleShapeFunction[2] * segmentShapeFunction[1];
    \n+
    101
    \n+
    102 // lower triangle edges
    \n+
    103 out[9] = triangleShapeFunction[3] * segmentShapeFunction[0];
    \n+
    104 out[10] = triangleShapeFunction[4] * segmentShapeFunction[0];
    \n+
    105 out[11] = triangleShapeFunction[5] * segmentShapeFunction[0];
    \n+
    106
    \n+
    107 // upper triangle edges
    \n+
    108 out[12] = triangleShapeFunction[3] * segmentShapeFunction[2];
    \n+
    109 out[13] = triangleShapeFunction[4] * segmentShapeFunction[2];
    \n+
    110 out[14] = triangleShapeFunction[5] * segmentShapeFunction[2];
    \n+
    111
    \n+
    112 // quadrilateral sides
    \n+
    113 out[15] = triangleShapeFunction[3] * segmentShapeFunction[1];
    \n+
    114 out[16] = triangleShapeFunction[4] * segmentShapeFunction[1];
    \n+
    115 out[17] = triangleShapeFunction[5] * segmentShapeFunction[1];
    \n+
    116
    \n+
    117 return;
    \n+
    118 }
    \n+
    119
    \n+
    120 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::evaluateFunction for order " << k);
    \n+
    121 }
    \n+
    122
    \n+
    128 void evaluateJacobian(const typename Traits::DomainType& in,
    \n+
    129 std::vector<typename Traits::JacobianType>& out) const
    \n+
    130 {
    \n+
    131 out.resize(size());
    \n+
    132
    \n+
    133 // Specialization for k==0
    \n+
    134 if (k==0)
    \n+
    135 {
    \n+
    136 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n+
    137 return;
    \n+
    138 }
    \n+
    139
    \n+
    140 if (k==1)
    \n+
    141 {
    \n+
    142 out[0][0] = {in[2]-1, in[2]-1, in[0]+in[1]-1};
    \n+
    143 out[1][0] = {1-in[2], 0, -in[0]};
    \n+
    144 out[2][0] = { 0, 1-in[2], -in[1]};
    \n+
    145 out[3][0] = { -in[2], -in[2], 1-in[0]-in[1]};
    \n+
    146 out[4][0] = { in[2], 0, in[0]};
    \n+
    147 out[5][0] = { 0, in[2], in[1]};
    \n+
    148
    \n+
    149 return;
    \n+
    150 }
    \n+
    151
    \n+
    152 if (k==2)
    \n+
    153 {
    \n+
    154 // Second-order shape functions on a triangle, and the first derivatives
    \n+
    155 FieldVector<R, 6> triangleShapeFunction;
    \n+
    156 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n+
    157 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n+
    158 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n+
    159 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n+
    160 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n+
    161 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n+
    162
    \n+
    163 std::array<std::array<R,2>,6> triangleShapeFunctionDer;
    \n+
    164 triangleShapeFunctionDer[0] = {-3 + 4*(in[0] + in[1]), -3 + 4*(in[0] + in[1])};
    \n+
    165 triangleShapeFunctionDer[1] = { -1 + 4*in[0], 0};
    \n+
    166 triangleShapeFunctionDer[2] = { 0, -1 + 4*in[1]};
    \n+
    167 triangleShapeFunctionDer[3] = { 4 - 8*in[0] - 4*in[1], -4*in[0]};
    \n+
    168 triangleShapeFunctionDer[4] = { -4*in[1], 4 - 4*in[0] - 8*in[1]};
    \n+
    169 triangleShapeFunctionDer[5] = { 4*in[1], 4*in[0]};
    \n+
    170
    \n+
    171 // Second-order shape functions on a line, and the first derivatives
    \n+
    172 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    173 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    174 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n+
    175 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    176
    \n+
    177 FieldVector<R,k+1> segmentShapeFunctionDer;
    \n+
    178 segmentShapeFunctionDer[0] = -3 + 4*in[2];
    \n+
    179 segmentShapeFunctionDer[1] = 4 - 8*in[2];
    \n+
    180 segmentShapeFunctionDer[2] = -1 + 4*in[2];
    \n+
    181
    \n+
    182 // lower triangle:
    \n+
    183 out[0][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[0];
    \n+
    184 out[0][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[0];
    \n+
    185 out[0][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];
    \n+
    186
    \n+
    187 out[1][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[0];
    \n+
    188 out[1][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[0];
    \n+
    189 out[1][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];
    \n+
    190
    \n+
    191 out[2][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[0];
    \n+
    192 out[2][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[0];
    \n+
    193 out[2][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];
    \n+
    194
    \n+
    195 //upper triangle
    \n+
    196 out[3][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[2];
    \n+
    197 out[3][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[2];
    \n+
    198 out[3][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];
    \n+
    199
    \n+
    200 out[4][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[2];
    \n+
    201 out[4][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[2];
    \n+
    202 out[4][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];
    \n+
    203
    \n+
    204 out[5][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[2];
    \n+
    205 out[5][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[2];
    \n+
    206 out[5][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];
    \n+
    207
    \n+
    208 // vertical edges
    \n+
    209 out[6][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[1];
    \n+
    210 out[6][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[1];
    \n+
    211 out[6][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];
    \n+
    212
    \n+
    213 out[7][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[1];
    \n+
    214 out[7][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[1];
    \n+
    215 out[7][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];
    \n+
    216
    \n+
    217 out[8][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[1];
    \n+
    218 out[8][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[1];
    \n+
    219 out[8][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];
    \n+
    220
    \n+
    221 // lower triangle edges
    \n+
    222 out[9][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[0];
    \n+
    223 out[9][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[0];
    \n+
    224 out[9][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];
    \n+
    225
    \n+
    226 out[10][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[0];
    \n+
    227 out[10][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[0];
    \n+
    228 out[10][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];
    \n+
    229
    \n+
    230 out[11][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[0];
    \n+
    231 out[11][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[0];
    \n+
    232 out[11][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];
    \n+
    233
    \n+
    234 // upper triangle edges
    \n+
    235 out[12][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[2];
    \n+
    236 out[12][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[2];
    \n+
    237 out[12][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];
    \n+
    238
    \n+
    239 out[13][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[2];
    \n+
    240 out[13][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[2];
    \n+
    241 out[13][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];
    \n+
    242
    \n+
    243 out[14][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[2];
    \n+
    244 out[14][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[2];
    \n+
    245 out[14][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];
    \n+
    246
    \n+
    247 // quadrilateral sides
    \n+
    248 out[15][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[1];
    \n+
    249 out[15][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[1];
    \n+
    250 out[15][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];
    \n+
    251
    \n+
    252 out[16][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[1];
    \n+
    253 out[16][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[1];
    \n+
    254 out[16][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];
    \n+
    255
    \n+
    256 out[17][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[1];
    \n+
    257 out[17][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[1];
    \n+
    258 out[17][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];
    \n+
    259
    \n+
    260 return;
    \n+
    261 }
    \n+
    262
    \n+
    263 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::evaluateJacobian for order " << k);
    \n+
    264 }
    \n+
    265
    \n+
    272 void partial(const std::array<unsigned int,dim>& order,
    \n+
    273 const typename Traits::DomainType& in,
    \n+
    274 std::vector<typename Traits::RangeType>& out) const
    \n+
    275 {
    \n+
    276 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    277
    \n+
    278 out.resize(size());
    \n+
    279
    \n+
    280 if (totalOrder == 0)
    \n+
    281 {
    \n+
    282 evaluateFunction(in, out);
    \n+
    283 return;
    \n+
    284 }
    \n+
    285
    \n+
    286 // Specialization for zero-order finite elements
    \n+
    287 if (k==0)
    \n+
    288 {
    \n+
    289 out[0] = 0;
    \n+
    290 return;
    \n+
    291 }
    \n+
    292
    \n+
    293 // Specialization for first-order finite elements
    \n+
    294 if (k==1)
    \n+
    295 {
    \n+
    296 if (totalOrder == 1)
    \n+
    297 {
    \n+
    298 auto direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    299
    \n+
    300 switch (direction) {
    \n+
    301 case 0:
    \n+
    302 out[0] = in[2]-1;
    \n+
    303 out[1] = 1-in[2];
    \n+
    304 out[2] = 0;
    \n+
    305 out[3] = -in[2];
    \n+
    306 out[4] = in[2];
    \n+
    307 out[5] = 0;
    \n+
    308 break;
    \n+
    309 case 1:
    \n+
    310 out[0] = in[2]-1;
    \n+
    311 out[1] = 0;
    \n+
    312 out[2] = 1-in[2];
    \n+
    313 out[3] = -in[2];
    \n+
    314 out[4] = 0;
    \n+
    315 out[5] = in[2];
    \n+
    316 break;
    \n+
    317 case 2:
    \n+
    318 out[0] = in[0]+in[1]-1;
    \n+
    319 out[1] = -in[0];
    \n+
    320 out[2] = -in[1];
    \n+
    321 out[3] = 1-in[0]-in[1];
    \n+
    322 out[4] = in[0];
    \n+
    323 out[5] = in[1];
    \n+
    324 break;
    \n+
    325 default:
    \n+
    326 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    327 }
    \n+
    328 } else if (totalOrder == 2) {
    \n+
    329 out.resize(size());
    \n+
    330 if (order[0] == 1 && order[2] == 1) {
    \n+
    331 out[0] = 1;
    \n+
    332 out[1] =-1;
    \n+
    333 out[2] = 0;
    \n+
    334 out[3] =-1;
    \n+
    335 out[4] = 1;
    \n+
    336 out[5] = 0;
    \n+
    337 } else if (order[1] == 1 && order[2] == 1) {
    \n+
    338 out[0] = 1;
    \n+
    339 out[1] = 0;
    \n+
    340 out[2] =-1;
    \n+
    341 out[3] =-1;
    \n+
    342 out[4] = 0;
    \n+
    343 out[5] = 1;
    \n+
    344 } else {
    \n+
    345 for (std::size_t i = 0; i < size(); ++i)
    \n+
    346 out[i] = 0;
    \n+
    347 }
    \n+
    348 } else {
    \n+
    349 out.resize(size());
    \n+
    350 std::fill(out.begin(), out.end(), 0.0);
    \n+
    351 }
    \n+
    352
    \n+
    353 return;
    \n+
    354 }
    \n+
    355
    \n+
    356 // Specialization for second-order finite elements
    \n+
    357 if (k==2)
    \n+
    358 {
    \n+
    359 if (totalOrder == 1)
    \n+
    360 {
    \n+
    361 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    362 switch (direction)
    \n+
    363 {
    \n+
    364 case 0:
    \n+
    365 {
    \n+
    366 FieldVector<R,6> triangleShapeFunctionDerX;
    \n+
    367 triangleShapeFunctionDerX[0] = -3 + 4*(in[0] + in[1]);
    \n+
    368 triangleShapeFunctionDerX[1] = -1 + 4* in[0];
    \n+
    369 triangleShapeFunctionDerX[2] = 0;
    \n+
    370 triangleShapeFunctionDerX[3] = 4 - 8* in[0] - 4*in[1];
    \n+
    371 triangleShapeFunctionDerX[4] = -4*in[1];
    \n+
    372 triangleShapeFunctionDerX[5] = 4*in[1];
    \n+
    373
    \n+
    374 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    375 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    376 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n+
    377 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    378
    \n+
    379 out[0] = triangleShapeFunctionDerX[0] * segmentShapeFunction[0];
    \n+
    380 out[1] = triangleShapeFunctionDerX[1] * segmentShapeFunction[0];
    \n+
    381 out[2] = triangleShapeFunctionDerX[2] * segmentShapeFunction[0];
    \n+
    382 out[3] = triangleShapeFunctionDerX[0] * segmentShapeFunction[2];
    \n+
    383 out[4] = triangleShapeFunctionDerX[1] * segmentShapeFunction[2];
    \n+
    384 out[5] = triangleShapeFunctionDerX[2] * segmentShapeFunction[2];
    \n+
    385 out[6] = triangleShapeFunctionDerX[0] * segmentShapeFunction[1];
    \n+
    386 out[7] = triangleShapeFunctionDerX[1] * segmentShapeFunction[1];
    \n+
    387 out[8] = triangleShapeFunctionDerX[2] * segmentShapeFunction[1];
    \n+
    388 out[9] = triangleShapeFunctionDerX[3] * segmentShapeFunction[0];
    \n+
    389 out[10] = triangleShapeFunctionDerX[4] * segmentShapeFunction[0];
    \n+
    390 out[11] = triangleShapeFunctionDerX[5] * segmentShapeFunction[0];
    \n+
    391 out[12] = triangleShapeFunctionDerX[3] * segmentShapeFunction[2];
    \n+
    392 out[13] = triangleShapeFunctionDerX[4] * segmentShapeFunction[2];
    \n+
    393 out[14] = triangleShapeFunctionDerX[5] * segmentShapeFunction[2];
    \n+
    394 out[15] = triangleShapeFunctionDerX[3] * segmentShapeFunction[1];
    \n+
    395 out[16] = triangleShapeFunctionDerX[4] * segmentShapeFunction[1];
    \n+
    396 out[17] = triangleShapeFunctionDerX[5] * segmentShapeFunction[1];
    \n+
    397 break;
    \n+
    398 }
    \n+
    399 case 1:
    \n+
    400 {
    \n+
    401 FieldVector<R,6> triangleShapeFunctionDerY;
    \n+
    402 triangleShapeFunctionDerY[0] = -3 + 4*(in[0] + in[1]);
    \n+
    403 triangleShapeFunctionDerY[1] = 0;
    \n+
    404 triangleShapeFunctionDerY[2] = -1 + 4* in[1];
    \n+
    405 triangleShapeFunctionDerY[3] = -4* in[0];
    \n+
    406 triangleShapeFunctionDerY[4] = 4 - 4* in[0] - 8*in[1];
    \n+
    407 triangleShapeFunctionDerY[5] = 4* in[0];
    \n+
    408
    \n+
    409 FieldVector<R,k+1> segmentShapeFunction;
    \n+
    410 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);
    \n+
    411 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);
    \n+
    412 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);
    \n+
    413
    \n+
    414 out[0] = triangleShapeFunctionDerY[0] * segmentShapeFunction[0];
    \n+
    415 out[1] = triangleShapeFunctionDerY[1] * segmentShapeFunction[0];
    \n+
    416 out[2] = triangleShapeFunctionDerY[2] * segmentShapeFunction[0];
    \n+
    417 out[3] = triangleShapeFunctionDerY[0] * segmentShapeFunction[2];
    \n+
    418 out[4] = triangleShapeFunctionDerY[1] * segmentShapeFunction[2];
    \n+
    419 out[5] = triangleShapeFunctionDerY[2] * segmentShapeFunction[2];
    \n+
    420 out[6] = triangleShapeFunctionDerY[0] * segmentShapeFunction[1];
    \n+
    421 out[7] = triangleShapeFunctionDerY[1] * segmentShapeFunction[1];
    \n+
    422 out[8] = triangleShapeFunctionDerY[2] * segmentShapeFunction[1];
    \n+
    423 out[9] = triangleShapeFunctionDerY[3] * segmentShapeFunction[0];
    \n+
    424 out[10] = triangleShapeFunctionDerY[4] * segmentShapeFunction[0];
    \n+
    425 out[11] = triangleShapeFunctionDerY[5] * segmentShapeFunction[0];
    \n+
    426 out[12] = triangleShapeFunctionDerY[3] * segmentShapeFunction[2];
    \n+
    427 out[13] = triangleShapeFunctionDerY[4] * segmentShapeFunction[2];
    \n+
    428 out[14] = triangleShapeFunctionDerY[5] * segmentShapeFunction[2];
    \n+
    429 out[15] = triangleShapeFunctionDerY[3] * segmentShapeFunction[1];
    \n+
    430 out[16] = triangleShapeFunctionDerY[4] * segmentShapeFunction[1];
    \n+
    431 out[17] = triangleShapeFunctionDerY[5] * segmentShapeFunction[1];
    \n+
    432 break;
    \n+
    433 }
    \n+
    434 case 2:
    \n+
    435 {
    \n+
    436 FieldVector<R, 6> triangleShapeFunction;
    \n+
    437 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);
    \n+
    438 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);
    \n+
    439 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);
    \n+
    440 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);
    \n+
    441 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);
    \n+
    442 triangleShapeFunction[5] = 4*in[0]*in[1];
    \n+
    443
    \n+
    444 FieldVector<R,k+1> segmentShapeFunctionDer;
    \n+
    445 segmentShapeFunctionDer[0] = -3 + 4*in[2];
    \n+
    446 segmentShapeFunctionDer[1] = 4 - 8*in[2];
    \n+
    447 segmentShapeFunctionDer[2] = -1 + 4*in[2];
    \n+
    448
    \n+
    449 out[0] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];
    \n+
    450 out[1] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];
    \n+
    451 out[2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];
    \n+
    452 out[3] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];
    \n+
    453 out[4] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];
    \n+
    454 out[5] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];
    \n+
    455 out[6] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];
    \n+
    456 out[7] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];
    \n+
    457 out[8] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];
    \n+
    458 out[9] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];
    \n+
    459 out[10] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];
    \n+
    460 out[11] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];
    \n+
    461 out[12] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];
    \n+
    462 out[13] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];
    \n+
    463 out[14] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];
    \n+
    464 out[15] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];
    \n+
    465 out[16] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];
    \n+
    466 out[17] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];
    \n+
    467 break;
    \n+
    468 }
    \n+
    469 default:
    \n+
    470 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    471 }
    \n+
    472 } else {
    \n+
    473 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    474 }
    \n+
    475
    \n+
    476 return;
    \n+
    477 }
    \n+
    478
    \n+
    479 DUNE_THROW(NotImplemented, "LagrangePrismLocalBasis::partial not implemented for order " << k);
    \n+
    480 }
    \n+
    481
    \n+
    483 static constexpr unsigned int order ()
    \n+
    484 {
    \n+
    485 return k;
    \n+
    486 }
    \n+
    487 };
    \n+
    488
    \n+
    493 template<unsigned int k>
    \n+
    494 class LagrangePrismLocalCoefficients
    \n+
    495 {
    \n+
    496 public:
    \n+
    498 LagrangePrismLocalCoefficients ()
    \n+
    499 : localKeys_(size())
    \n+
    500 {
    \n+
    501 if (k==0)
    \n+
    502 {
    \n+
    503 localKeys_[0] = LocalKey(0,0,0);
    \n+
    504 return;
    \n+
    505 }
    \n+
    506
    \n+
    507 if (k==1)
    \n+
    508 {
    \n+
    509 for (std::size_t i=0; i<size(); i++)
    \n+
    510 localKeys_[i] = LocalKey(i,3,0);
    \n+
    511 return;
    \n+
    512 }
    \n+
    513
    \n+
    514 if (k==2)
    \n+
    515 {
    \n+
    516 // Vertex shape functions
    \n+
    517 localKeys_[0] = LocalKey(0,3,0);
    \n+
    518 localKeys_[1] = LocalKey(1,3,0);
    \n+
    519 localKeys_[2] = LocalKey(2,3,0);
    \n+
    520 localKeys_[3] = LocalKey(3,3,0);
    \n+
    521 localKeys_[4] = LocalKey(4,3,0);
    \n+
    522 localKeys_[5] = LocalKey(5,3,0);
    \n+
    523
    \n+
    524 // Edge shape functions
    \n+
    525 localKeys_[6] = LocalKey(0,2,0);
    \n+
    526 localKeys_[7] = LocalKey(1,2,0);
    \n+
    527 localKeys_[8] = LocalKey(2,2,0);
    \n+
    528 localKeys_[9] = LocalKey(3,2,0);
    \n+
    529 localKeys_[10] = LocalKey(4,2,0);
    \n+
    530 localKeys_[11] = LocalKey(5,2,0);
    \n+
    531 localKeys_[12] = LocalKey(6,2,0);
    \n+
    532 localKeys_[13] = LocalKey(7,2,0);
    \n+
    533 localKeys_[14] = LocalKey(8,2,0);
    \n+
    534
    \n+
    535 // Quadrilateral sides shape functions
    \n+
    536 localKeys_[15] = LocalKey(0,1,0);
    \n+
    537 localKeys_[16] = LocalKey(1,1,0);
    \n+
    538 localKeys_[17] = LocalKey(2,1,0);
    \n+
    539
    \n+
    540 return;
    \n+
    541 }
    \n+
    542
    \n+
    543 // Now: the general case
    \n+
    544 DUNE_THROW(NotImplemented, "LagrangePrismLocalCoefficients not implemented for order " << k);
    \n+
    545
    \n+
    546 }
    \n+
    547
    \n+
    549 static constexpr std::size_t size ()
    \n+
    550 {
    \n+
    551 return binomial(k+2,2u) * (k+1);
    \n+
    552 }
    \n+
    553
    \n+
    555 const LocalKey& localKey (std::size_t i) const
    \n+
    556 {
    \n+
    557 return localKeys_[i];
    \n+
    558 }
    \n+
    559
    \n+
    560 private:
    \n+
    561 std::vector<LocalKey> localKeys_;
    \n+
    562 };
    \n+
    563
    \n+
    568 template<class LocalBasis>
    \n+
    569 class LagrangePrismLocalInterpolation
    \n+
    570 {
    \n+
    571 public:
    \n+
    572
    \n+
    580 template<typename F, typename C>
    \n+
    581 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    582 {
    \n+
    583 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n+
    584 constexpr auto k = LocalBasis::order();
    \n+
    585 using D = typename LocalBasis::Traits::DomainType;
    \n+
    586 using DF = typename LocalBasis::Traits::DomainFieldType;
    \n+
    587
    \n+
    588 auto&& f = Impl::makeFunctionWithCallOperator<D>(ff);
    \n+
    589
    \n+
    590 out.resize(LocalBasis::size());
    \n+
    591
    \n+
    592 // Specialization for zero-order case
    \n+
    593 if (k==0)
    \n+
    594 {
    \n+
    595 auto center = ReferenceElements<DF,dim>::general(GeometryTypes::prism).position(0,0);
    \n+
    596 out[0] = f(center);
    \n+
    597 return;
    \n+
    598 }
    \n+
    599
    \n+
    600 // Specialization for first-order case
    \n+
    601 if (k==1)
    \n+
    602 {
    \n+
    603 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n+
    604 {
    \n+
    605 auto vertex = ReferenceElements<DF,3>::general(GeometryTypes::prism).position(i,3);
    \n+
    606 out[i] = f(vertex);
    \n+
    607 }
    \n+
    608 return;
    \n+
    609 }
    \n+
    610
    \n+
    611 if (k==2)
    \n+
    612 {
    \n+
    613 out[0] = f( D( {0.0, 0.0, 0.0} ) );
    \n+
    614 out[1] = f( D( {1.0, 0.0, 0.0} ) );
    \n+
    615 out[2] = f( D( {0.0, 1.0, 0.0} ) );
    \n+
    616 out[3] = f( D( {0.0, 0.0, 1.0} ) );
    \n+
    617 out[4] = f( D( {1.0, 0.0, 1.0} ) );
    \n+
    618 out[5] = f( D( {0.0, 1.0, 1.0} ) );
    \n+
    619 out[6] = f( D( {0.0, 0.0, 0.5} ) );
    \n+
    620 out[7] = f( D( {1.0, 0.0, 0.5} ) );
    \n+
    621 out[8] = f( D( {0.0, 1.0, 0.5} ) );
    \n+
    622 out[9] = f( D( {0.5, 0.0, 0.0} ) );
    \n+
    623 out[10] = f( D( {0.0, 0.5, 0.0} ) );
    \n+
    624 out[11] = f( D( {0.5, 0.5, 0.0} ) );
    \n+
    625 out[12] = f( D( {0.5, 0.0, 1.0} ) );
    \n+
    626 out[13] = f( D( {0.0, 0.5, 1.0} ) );
    \n+
    627 out[14] = f( D( {0.5, 0.5, 1.0} ) );
    \n+
    628 out[15] = f( D( {0.5, 0.0, 0.5} ) );
    \n+
    629 out[16] = f( D( {0.0, 0.5, 0.5} ) );
    \n+
    630 out[17] = f( D( {0.5, 0.5, 0.5} ) );
    \n+
    631
    \n+
    632 return;
    \n+
    633 }
    \n+
    634
    \n+
    635 DUNE_THROW(NotImplemented, "LagrangePrismLocalInterpolation not implemented for order " << k);
    \n+
    636 }
    \n+
    637
    \n+
    638 };
    \n+
    639
    \n+
    640} } // namespace Dune::Impl
    \n+
    641
    \n+
    642namespace Dune
    \n+
    643{
    \n+
    650 template<class D, class R, int k>
    \n+
    \n+\n+
    652 {
    \n+
    653 public:
    \n+\n+
    657 Impl::LagrangePrismLocalCoefficients<k>,
    \n+
    658 Impl::LagrangePrismLocalInterpolation<Impl::LagrangePrismLocalBasis<D,R,k> > >;
    \n+
    659
    \n+\n+
    666
    \n+
    \n+
    669 const typename Traits::LocalBasisType& localBasis () const
    \n+
    670 {
    \n+
    671 return basis_;
    \n+
    672 }
    \n+
    \n+
    673
    \n+
    \n+\n+
    677 {
    \n+
    678 return coefficients_;
    \n+
    679 }
    \n+
    \n+
    680
    \n+
    \n+\n+
    684 {
    \n+
    685 return interpolation_;
    \n+
    686 }
    \n+
    \n+
    687
    \n+
    \n+
    689 static constexpr std::size_t size ()
    \n+
    690 {
    \n+
    691 return binomial(k+2,2) * (k+1);
    \n+
    692 }
    \n+
    \n+
    693
    \n+
    \n+
    696 static constexpr GeometryType type ()
    \n+
    697 {
    \n+
    698 return GeometryTypes::prism;
    \n+
    699 }
    \n+
    \n+
    700
    \n+
    701 private:
    \n+
    702 Impl::LagrangePrismLocalBasis<D,R,k> basis_;
    \n+
    703 Impl::LagrangePrismLocalCoefficients<k> coefficients_;
    \n+
    704 Impl::LagrangePrismLocalInterpolation<Impl::LagrangePrismLocalBasis<D,R,k> > interpolation_;
    \n+
    705 };
    \n+
    \n+
    706
    \n+
    707} // namespace Dune
    \n+
    708
    \n+
    709#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n+
    D DomainType
    domain type
    Definition common/localbasis.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-
    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-
    Lowest order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas0cube2dall.hh:30
    \n-
    Lowest order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas0cube2dall.hh:134
    \n-
    Layout map for RT0 elements on quadrilaterals.
    Definition raviartthomas0cube2dall.hh:186
    \n+
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:652
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangeprism.hh:689
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangeprism.hh:683
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangeprism.hh:696
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangeprism.hh:676
    \n+
    LagrangePrismLocalFiniteElement()
    Default constructor.
    Definition lagrangeprism.hh:665
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangeprism.hh:669
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,130 +1,722 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGEPRISM_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_\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+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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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+33 template\n+34 class LagrangePrismLocalBasis\n+35 {\n+36 static constexpr std::size_t dim = 3;\n+37 public:\n+38 using Traits =\n+LocalBasisTraits,R,1,FieldVector,FieldMatrix\n+>;\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::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+42 static constexpr unsigned int size ()\n+43 {\n+44 return binomial(k+2,2u) * (k+1);\n+45 }\n+46\n+48 void evaluateFunction(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 out.resize(size());\n+52\n+53 // Specialization for zero-order case\n+54 if (k==0)\n+55 {\n+56 out[0] = 1;\n+57 return;\n+58 }\n+59\n+60 if (k==1)\n+61 {\n+62 out[0] = (1.0-in[0]-in[1])*(1.0-in[2]);\n+63 out[1] = in[0]*(1-in[2]);\n+64 out[2] = in[1]*(1-in[2]);\n+65 out[3] = in[2]*(1.0-in[0]-in[1]);\n+66 out[4] = in[0]*in[2];\n+67 out[5] = in[1]*in[2];\n+68\n+69 return;\n+70 }\n+71\n+72 if (k==2)\n+73 {\n+74 FieldVector segmentShapeFunction;\n+75 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+76 segmentShapeFunction[1] = in[2] * (4 - 4*in[2]);\n+77 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+78\n+79 FieldVector triangleShapeFunction;\n+80 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n+81 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n+82 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n+83 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n+84 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n+85 triangleShapeFunction[5] = 4*in[0]*in[1];\n+86\n+87 // lower triangle:\n+88 out[0] = triangleShapeFunction[0] * segmentShapeFunction[0];\n+89 out[1] = triangleShapeFunction[1] * segmentShapeFunction[0];\n+90 out[2] = triangleShapeFunction[2] * segmentShapeFunction[0];\n+91\n+92 //upper triangle\n+93 out[3] = triangleShapeFunction[0] * segmentShapeFunction[2];\n+94 out[4] = triangleShapeFunction[1] * segmentShapeFunction[2];\n+95 out[5] = triangleShapeFunction[2] * segmentShapeFunction[2];\n+96\n+97 // vertical edges\n+98 out[6] = triangleShapeFunction[0] * segmentShapeFunction[1];\n+99 out[7] = triangleShapeFunction[1] * segmentShapeFunction[1];\n+100 out[8] = triangleShapeFunction[2] * segmentShapeFunction[1];\n+101\n+102 // lower triangle edges\n+103 out[9] = triangleShapeFunction[3] * segmentShapeFunction[0];\n+104 out[10] = triangleShapeFunction[4] * segmentShapeFunction[0];\n+105 out[11] = triangleShapeFunction[5] * segmentShapeFunction[0];\n+106\n+107 // upper triangle edges\n+108 out[12] = triangleShapeFunction[3] * segmentShapeFunction[2];\n+109 out[13] = triangleShapeFunction[4] * segmentShapeFunction[2];\n+110 out[14] = triangleShapeFunction[5] * segmentShapeFunction[2];\n+111\n+112 // quadrilateral sides\n+113 out[15] = triangleShapeFunction[3] * segmentShapeFunction[1];\n+114 out[16] = triangleShapeFunction[4] * segmentShapeFunction[1];\n+115 out[17] = triangleShapeFunction[5] * segmentShapeFunction[1];\n+116\n+117 return;\n+118 }\n+119\n+120 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::evaluateFunction for\n+order \" << k);\n+121 }\n+122\n+128 void evaluateJacobian(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+129 std::vector& out) const\n+130 {\n+131 out.resize(size());\n+132\n+133 // Specialization for k==0\n+134 if (k==0)\n+135 {\n+136 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n+137 return;\n+138 }\n+139\n+140 if (k==1)\n+141 {\n+142 out[0][0] = {in[2]-1, in[2]-1, in[0]+in[1]-1};\n+143 out[1][0] = {1-in[2], 0, -in[0]};\n+144 out[2][0] = { 0, 1-in[2], -in[1]};\n+145 out[3][0] = { -in[2], -in[2], 1-in[0]-in[1]};\n+146 out[4][0] = { in[2], 0, in[0]};\n+147 out[5][0] = { 0, in[2], in[1]};\n+148\n+149 return;\n+150 }\n+151\n+152 if (k==2)\n+153 {\n+154 // Second-order shape functions on a triangle, and the first derivatives\n+155 FieldVector triangleShapeFunction;\n+156 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n+157 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n+158 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n+159 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n+160 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n+161 triangleShapeFunction[5] = 4*in[0]*in[1];\n+162\n+163 std::array,6> triangleShapeFunctionDer;\n+164 triangleShapeFunctionDer[0] = {-3 + 4*(in[0] + in[1]), -3 + 4*(in[0] + in\n+[1])};\n+165 triangleShapeFunctionDer[1] = { -1 + 4*in[0], 0};\n+166 triangleShapeFunctionDer[2] = { 0, -1 + 4*in[1]};\n+167 triangleShapeFunctionDer[3] = { 4 - 8*in[0] - 4*in[1], -4*in[0]};\n+168 triangleShapeFunctionDer[4] = { -4*in[1], 4 - 4*in[0] - 8*in[1]};\n+169 triangleShapeFunctionDer[5] = { 4*in[1], 4*in[0]};\n+170\n+171 // Second-order shape functions on a line, and the first derivatives\n+172 FieldVector segmentShapeFunction;\n+173 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+174 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n+175 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+176\n+177 FieldVector segmentShapeFunctionDer;\n+178 segmentShapeFunctionDer[0] = -3 + 4*in[2];\n+179 segmentShapeFunctionDer[1] = 4 - 8*in[2];\n+180 segmentShapeFunctionDer[2] = -1 + 4*in[2];\n+181\n+182 // lower triangle:\n+183 out[0][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[0];\n+184 out[0][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[0];\n+185 out[0][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];\n+186\n+187 out[1][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[0];\n+188 out[1][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[0];\n+189 out[1][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];\n+190\n+191 out[2][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[0];\n+192 out[2][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[0];\n+193 out[2][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];\n+194\n+195 //upper triangle\n+196 out[3][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[2];\n+197 out[3][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[2];\n+198 out[3][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];\n+199\n+200 out[4][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[2];\n+201 out[4][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[2];\n+202 out[4][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];\n+203\n+204 out[5][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[2];\n+205 out[5][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[2];\n+206 out[5][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];\n+207\n+208 // vertical edges\n+209 out[6][0][0] = triangleShapeFunctionDer[0][0] * segmentShapeFunction[1];\n+210 out[6][0][1] = triangleShapeFunctionDer[0][1] * segmentShapeFunction[1];\n+211 out[6][0][2] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];\n+212\n+213 out[7][0][0] = triangleShapeFunctionDer[1][0] * segmentShapeFunction[1];\n+214 out[7][0][1] = triangleShapeFunctionDer[1][1] * segmentShapeFunction[1];\n+215 out[7][0][2] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];\n+216\n+217 out[8][0][0] = triangleShapeFunctionDer[2][0] * segmentShapeFunction[1];\n+218 out[8][0][1] = triangleShapeFunctionDer[2][1] * segmentShapeFunction[1];\n+219 out[8][0][2] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];\n+220\n+221 // lower triangle edges\n+222 out[9][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[0];\n+223 out[9][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[0];\n+224 out[9][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];\n+225\n+226 out[10][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[0];\n+227 out[10][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[0];\n+228 out[10][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];\n+229\n+230 out[11][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[0];\n+231 out[11][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[0];\n+232 out[11][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];\n+233\n+234 // upper triangle edges\n+235 out[12][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[2];\n+236 out[12][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[2];\n+237 out[12][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];\n+238\n+239 out[13][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[2];\n+240 out[13][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[2];\n+241 out[13][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];\n+242\n+243 out[14][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[2];\n+244 out[14][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[2];\n+245 out[14][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];\n+246\n+247 // quadrilateral sides\n+248 out[15][0][0] = triangleShapeFunctionDer[3][0] * segmentShapeFunction[1];\n+249 out[15][0][1] = triangleShapeFunctionDer[3][1] * segmentShapeFunction[1];\n+250 out[15][0][2] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];\n+251\n+252 out[16][0][0] = triangleShapeFunctionDer[4][0] * segmentShapeFunction[1];\n+253 out[16][0][1] = triangleShapeFunctionDer[4][1] * segmentShapeFunction[1];\n+254 out[16][0][2] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];\n+255\n+256 out[17][0][0] = triangleShapeFunctionDer[5][0] * segmentShapeFunction[1];\n+257 out[17][0][1] = triangleShapeFunctionDer[5][1] * segmentShapeFunction[1];\n+258 out[17][0][2] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];\n+259\n+260 return;\n+261 }\n+262\n+263 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::evaluateJacobian for\n+order \" << k);\n+264 }\n+265\n+272 void partial(const std::array& order,\n+273 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in,\n+274 std::vector& out) const\n+275 {\n+276 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+277\n+278 out.resize(size());\n+279\n+280 if (totalOrder == 0)\n+281 {\n+282 evaluateFunction(in, out);\n+283 return;\n+284 }\n+285\n+286 // Specialization for zero-order finite elements\n+287 if (k==0)\n+288 {\n+289 out[0] = 0;\n+290 return;\n+291 }\n+292\n+293 // Specialization for first-order finite elements\n+294 if (k==1)\n+295 {\n+296 if (totalOrder == 1)\n+297 {\n+298 auto direction = std::distance(order.begin(), std::find(order.begin(),\n+order.end(), 1));\n+299\n+300 switch (direction) {\n+301 case 0:\n+302 out[0] = in[2]-1;\n+303 out[1] = 1-in[2];\n+304 out[2] = 0;\n+305 out[3] = -in[2];\n+306 out[4] = in[2];\n+307 out[5] = 0;\n+308 break;\n+309 case 1:\n+310 out[0] = in[2]-1;\n+311 out[1] = 0;\n+312 out[2] = 1-in[2];\n+313 out[3] = -in[2];\n+314 out[4] = 0;\n+315 out[5] = in[2];\n+316 break;\n+317 case 2:\n+318 out[0] = in[0]+in[1]-1;\n+319 out[1] = -in[0];\n+320 out[2] = -in[1];\n+321 out[3] = 1-in[0]-in[1];\n+322 out[4] = in[0];\n+323 out[5] = in[1];\n+324 break;\n+325 default:\n+326 DUNE_THROW(RangeError, \"Component out of range.\");\n+327 }\n+328 } else if (totalOrder == 2) {\n+329 out.resize(size());\n+330 if (order[0] == 1 && order[2] == 1) {\n+331 out[0] = 1;\n+332 out[1] =-1;\n+333 out[2] = 0;\n+334 out[3] =-1;\n+335 out[4] = 1;\n+336 out[5] = 0;\n+337 } else if (order[1] == 1 && order[2] == 1) {\n+338 out[0] = 1;\n+339 out[1] = 0;\n+340 out[2] =-1;\n+341 out[3] =-1;\n+342 out[4] = 0;\n+343 out[5] = 1;\n+344 } else {\n+345 for (std::size_t i = 0; i < size(); ++i)\n+346 out[i] = 0;\n+347 }\n+348 } else {\n+349 out.resize(size());\n+350 std::fill(out.begin(), out.end(), 0.0);\n+351 }\n+352\n+353 return;\n+354 }\n+355\n+356 // Specialization for second-order finite elements\n+357 if (k==2)\n+358 {\n+359 if (totalOrder == 1)\n+360 {\n+361 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+362 switch (direction)\n+363 {\n+364 case 0:\n+365 {\n+366 FieldVector triangleShapeFunctionDerX;\n+367 triangleShapeFunctionDerX[0] = -3 + 4*(in[0] + in[1]);\n+368 triangleShapeFunctionDerX[1] = -1 + 4* in[0];\n+369 triangleShapeFunctionDerX[2] = 0;\n+370 triangleShapeFunctionDerX[3] = 4 - 8* in[0] - 4*in[1];\n+371 triangleShapeFunctionDerX[4] = -4*in[1];\n+372 triangleShapeFunctionDerX[5] = 4*in[1];\n+373\n+374 FieldVector segmentShapeFunction;\n+375 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+376 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n+377 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+378\n+379 out[0] = triangleShapeFunctionDerX[0] * segmentShapeFunction[0];\n+380 out[1] = triangleShapeFunctionDerX[1] * segmentShapeFunction[0];\n+381 out[2] = triangleShapeFunctionDerX[2] * segmentShapeFunction[0];\n+382 out[3] = triangleShapeFunctionDerX[0] * segmentShapeFunction[2];\n+383 out[4] = triangleShapeFunctionDerX[1] * segmentShapeFunction[2];\n+384 out[5] = triangleShapeFunctionDerX[2] * segmentShapeFunction[2];\n+385 out[6] = triangleShapeFunctionDerX[0] * segmentShapeFunction[1];\n+386 out[7] = triangleShapeFunctionDerX[1] * segmentShapeFunction[1];\n+387 out[8] = triangleShapeFunctionDerX[2] * segmentShapeFunction[1];\n+388 out[9] = triangleShapeFunctionDerX[3] * segmentShapeFunction[0];\n+389 out[10] = triangleShapeFunctionDerX[4] * segmentShapeFunction[0];\n+390 out[11] = triangleShapeFunctionDerX[5] * segmentShapeFunction[0];\n+391 out[12] = triangleShapeFunctionDerX[3] * segmentShapeFunction[2];\n+392 out[13] = triangleShapeFunctionDerX[4] * segmentShapeFunction[2];\n+393 out[14] = triangleShapeFunctionDerX[5] * segmentShapeFunction[2];\n+394 out[15] = triangleShapeFunctionDerX[3] * segmentShapeFunction[1];\n+395 out[16] = triangleShapeFunctionDerX[4] * segmentShapeFunction[1];\n+396 out[17] = triangleShapeFunctionDerX[5] * segmentShapeFunction[1];\n+397 break;\n+398 }\n+399 case 1:\n+400 {\n+401 FieldVector triangleShapeFunctionDerY;\n+402 triangleShapeFunctionDerY[0] = -3 + 4*(in[0] + in[1]);\n+403 triangleShapeFunctionDerY[1] = 0;\n+404 triangleShapeFunctionDerY[2] = -1 + 4* in[1];\n+405 triangleShapeFunctionDerY[3] = -4* in[0];\n+406 triangleShapeFunctionDerY[4] = 4 - 4* in[0] - 8*in[1];\n+407 triangleShapeFunctionDerY[5] = 4* in[0];\n+408\n+409 FieldVector segmentShapeFunction;\n+410 segmentShapeFunction[0] = 1 + in[2] * (-3 + 2*in[2]);\n+411 segmentShapeFunction[1] = in[2] * ( 4 - 4*in[2]);\n+412 segmentShapeFunction[2] = in[2] * (-1 + 2*in[2]);\n+413\n+414 out[0] = triangleShapeFunctionDerY[0] * segmentShapeFunction[0];\n+415 out[1] = triangleShapeFunctionDerY[1] * segmentShapeFunction[0];\n+416 out[2] = triangleShapeFunctionDerY[2] * segmentShapeFunction[0];\n+417 out[3] = triangleShapeFunctionDerY[0] * segmentShapeFunction[2];\n+418 out[4] = triangleShapeFunctionDerY[1] * segmentShapeFunction[2];\n+419 out[5] = triangleShapeFunctionDerY[2] * segmentShapeFunction[2];\n+420 out[6] = triangleShapeFunctionDerY[0] * segmentShapeFunction[1];\n+421 out[7] = triangleShapeFunctionDerY[1] * segmentShapeFunction[1];\n+422 out[8] = triangleShapeFunctionDerY[2] * segmentShapeFunction[1];\n+423 out[9] = triangleShapeFunctionDerY[3] * segmentShapeFunction[0];\n+424 out[10] = triangleShapeFunctionDerY[4] * segmentShapeFunction[0];\n+425 out[11] = triangleShapeFunctionDerY[5] * segmentShapeFunction[0];\n+426 out[12] = triangleShapeFunctionDerY[3] * segmentShapeFunction[2];\n+427 out[13] = triangleShapeFunctionDerY[4] * segmentShapeFunction[2];\n+428 out[14] = triangleShapeFunctionDerY[5] * segmentShapeFunction[2];\n+429 out[15] = triangleShapeFunctionDerY[3] * segmentShapeFunction[1];\n+430 out[16] = triangleShapeFunctionDerY[4] * segmentShapeFunction[1];\n+431 out[17] = triangleShapeFunctionDerY[5] * segmentShapeFunction[1];\n+432 break;\n+433 }\n+434 case 2:\n+435 {\n+436 FieldVector triangleShapeFunction;\n+437 triangleShapeFunction[0] = 2 * (1 - in[0] - in[1]) * (0.5 - in[0] - in[1]);\n+438 triangleShapeFunction[1] = 2 * in[0] * (-0.5 + in[0]);\n+439 triangleShapeFunction[2] = 2 * in[1] * (-0.5 + in[1]);\n+440 triangleShapeFunction[3] = 4*in[0] * (1 - in[0] - in[1]);\n+441 triangleShapeFunction[4] = 4*in[1] * (1 - in[0] - in[1]);\n+442 triangleShapeFunction[5] = 4*in[0]*in[1];\n+443\n+444 FieldVector segmentShapeFunctionDer;\n+445 segmentShapeFunctionDer[0] = -3 + 4*in[2];\n+446 segmentShapeFunctionDer[1] = 4 - 8*in[2];\n+447 segmentShapeFunctionDer[2] = -1 + 4*in[2];\n+448\n+449 out[0] = triangleShapeFunction[0] * segmentShapeFunctionDer[0];\n+450 out[1] = triangleShapeFunction[1] * segmentShapeFunctionDer[0];\n+451 out[2] = triangleShapeFunction[2] * segmentShapeFunctionDer[0];\n+452 out[3] = triangleShapeFunction[0] * segmentShapeFunctionDer[2];\n+453 out[4] = triangleShapeFunction[1] * segmentShapeFunctionDer[2];\n+454 out[5] = triangleShapeFunction[2] * segmentShapeFunctionDer[2];\n+455 out[6] = triangleShapeFunction[0] * segmentShapeFunctionDer[1];\n+456 out[7] = triangleShapeFunction[1] * segmentShapeFunctionDer[1];\n+457 out[8] = triangleShapeFunction[2] * segmentShapeFunctionDer[1];\n+458 out[9] = triangleShapeFunction[3] * segmentShapeFunctionDer[0];\n+459 out[10] = triangleShapeFunction[4] * segmentShapeFunctionDer[0];\n+460 out[11] = triangleShapeFunction[5] * segmentShapeFunctionDer[0];\n+461 out[12] = triangleShapeFunction[3] * segmentShapeFunctionDer[2];\n+462 out[13] = triangleShapeFunction[4] * segmentShapeFunctionDer[2];\n+463 out[14] = triangleShapeFunction[5] * segmentShapeFunctionDer[2];\n+464 out[15] = triangleShapeFunction[3] * segmentShapeFunctionDer[1];\n+465 out[16] = triangleShapeFunction[4] * segmentShapeFunctionDer[1];\n+466 out[17] = triangleShapeFunction[5] * segmentShapeFunctionDer[1];\n+467 break;\n+468 }\n+469 default:\n+470 DUNE_THROW(RangeError, \"Component out of range.\");\n+471 }\n+472 } else {\n+473 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+474 }\n+475\n+476 return;\n+477 }\n+478\n+479 DUNE_THROW(NotImplemented, \"LagrangePrismLocalBasis::partial not\n+implemented for order \" << k);\n+480 }\n+481\n+483 static constexpr unsigned int order ()\n+484 {\n+485 return k;\n+486 }\n+487 };\n+488\n+493 template\n+494 class LagrangePrismLocalCoefficients\n+495 {\n+496 public:\n+498 LagrangePrismLocalCoefficients ()\n+499 : localKeys_(size())\n+500 {\n+501 if (k==0)\n+502 {\n+503 localKeys_[0] = LocalKey(0,0,0);\n+504 return;\n+505 }\n+506\n+507 if (k==1)\n+508 {\n+509 for (std::size_t i=0; i localKeys_;\n+562 };\n+563\n+568 template\n+569 class LagrangePrismLocalInterpolation\n+570 {\n+571 public:\n+572\n+580 template\n+581 void interpolate (const F& ff, std::vector& out) const\n+582 {\n+583 constexpr auto dim = LocalBasis::Traits::dimDomain;\n+584 constexpr auto k = LocalBasis::order();\n+585 using D = typename LocalBasis::Traits::DomainType;\n+586 using DF = typename LocalBasis::Traits::DomainFieldType;\n+587\n+588 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+589\n+590 out.resize(LocalBasis::size());\n+591\n+592 // Specialization for zero-order case\n+593 if (k==0)\n+594 {\n+595 auto center = ReferenceElements::general(GeometryTypes::\n+prism).position(0,0);\n+596 out[0] = f(center);\n+597 return;\n+598 }\n+599\n+600 // Specialization for first-order case\n+601 if (k==1)\n+602 {\n+603 for (unsigned int i=0; i::general(GeometryTypes::\n+prism).position(i,3);\n+606 out[i] = f(vertex);\n+607 }\n+608 return;\n+609 }\n+610\n+611 if (k==2)\n+612 {\n+613 out[0] = f( D( {0.0, 0.0, 0.0} ) );\n+614 out[1] = f( D( {1.0, 0.0, 0.0} ) );\n+615 out[2] = f( D( {0.0, 1.0, 0.0} ) );\n+616 out[3] = f( D( {0.0, 0.0, 1.0} ) );\n+617 out[4] = f( D( {1.0, 0.0, 1.0} ) );\n+618 out[5] = f( D( {0.0, 1.0, 1.0} ) );\n+619 out[6] = f( D( {0.0, 0.0, 0.5} ) );\n+620 out[7] = f( D( {1.0, 0.0, 0.5} ) );\n+621 out[8] = f( D( {0.0, 1.0, 0.5} ) );\n+622 out[9] = f( D( {0.5, 0.0, 0.0} ) );\n+623 out[10] = f( D( {0.0, 0.5, 0.0} ) );\n+624 out[11] = f( D( {0.5, 0.5, 0.0} ) );\n+625 out[12] = f( D( {0.5, 0.0, 1.0} ) );\n+626 out[13] = f( D( {0.0, 0.5, 1.0} ) );\n+627 out[14] = f( D( {0.5, 0.5, 1.0} ) );\n+628 out[15] = f( D( {0.5, 0.0, 0.5} ) );\n+629 out[16] = f( D( {0.0, 0.5, 0.5} ) );\n+630 out[17] = f( D( {0.5, 0.5, 0.5} ) );\n+631\n+632 return;\n+633 }\n+634\n+635 DUNE_THROW(NotImplemented, \"LagrangePrismLocalInterpolation not implemented\n+for order \" << k);\n+636 }\n+637\n+638 };\n+639\n+640} } // namespace Dune::Impl\n+641\n+642namespace _\bD_\bu_\bn_\be\n+643{\n+650 template\n+_\b6_\b5_\b1 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+652 {\n+653 public:\n+_\b6_\b5_\b6 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+657 Impl::LagrangePrismLocalCoefficients,\n+658 Impl::LagrangePrismLocalInterpolation\n+> >;\n+659\n+_\b6_\b6_\b5 _\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+666\n+_\b6_\b6_\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+670 {\n+671 return basis_;\n+672 }\n+673\n+_\b6_\b7_\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+677 {\n+678 return coefficients_;\n+679 }\n+680\n+_\b6_\b8_\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+684 {\n+685 return interpolation_;\n+686 }\n+687\n+_\b6_\b8_\b9 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n+690 {\n+691 return binomial(k+2,2) * (k+1);\n+692 }\n+693\n+_\b6_\b9_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+697 {\n+698 return GeometryTypes::prism;\n+699 }\n+700\n+701 private:\n+702 Impl::LagrangePrismLocalBasis basis_;\n+703 Impl::LagrangePrismLocalCoefficients coefficients_;\n+704 Impl::LagrangePrismLocalInterpolation\n+> interpolation_;\n+705 };\n+706\n+707} // namespace Dune\n+708\n+709#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-_\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:_\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: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:_\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+_\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:652\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:689\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-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+Returns object that evaluates degrees of freedom.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:683\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-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-Lowest order Raviart-Thomas shape functions on the reference quadrilateral.\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-Lowest order Raviart-Thomas shape functions on the reference quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:134\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-Layout map for RT0 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube2dall.hh:186\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:696\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:676\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_\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+LagrangePrismLocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangeprism.hh:665\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:669\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 ===============================================================================\n 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: raviartthomas1cube3d.hh File Reference\n+dune-localfunctions: equidistantpoints.hh File Reference\n \n \n \n \n \n \n \n@@ -65,42 +65,57 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas1cube3d.hh File Reference
    \n+Namespaces |\n+Functions
    \n+
    equidistantpoints.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 <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
    \n

    Go to the source code of this file.

    \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::EquidistantPointSet< F, dim >
     
    \n \n \n \n+

    \n Namespaces

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

    \n+Functions

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

    class  Dune::RT1Cube2DLocalFiniteElement< D, R >
     First order Raviart-Thomas shape functions on quadrilaterals. More...
    struct  Dune::LagrangeBasisFactory< LP, dim, SF, CF >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-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+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_\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+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/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: raviartthomas1cube2d.hh Source File\n+dune-localfunctions: lagrangebasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,58 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas1cube2d.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 (C) 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_LAGRANGEBASIS_HH
    \n+
    6#define DUNE_LAGRANGEBASIS_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-
    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+
    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-
    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:27
    \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,137 +1,50 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LAGRANGEBASIS_HH\n+6#define DUNE_LAGRANGEBASIS_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-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-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_\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-_\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+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_\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:27\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/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: raviartthomaslfecache.hh File Reference\n+dune-localfunctions: q2.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,43 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomaslfecache.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    q2.hh File Reference
    \n \n
    \n-
    #include <tuple>
    \n-#include <utility>
    \n+
    #include <dune/common/typetraits.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/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-\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,25 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 \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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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:_\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-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/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: raviartthomaslfecache.hh Source File\n+dune-localfunctions: q2.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,77 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomaslfecache.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 (C) 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_Q2_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_Q2_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <tuple>
    \n-
    9#include <utility>
    \n+
    8#include <dune/common/typetraits.hh>
    \n+
    9#include <dune/geometry/type.hh>
    \n
    10
    \n-
    11#include <dune/geometry/type.hh>
    \n-
    12#include <dune/geometry/typeindex.hh>
    \n+\n+\n
    13
    \n-\n-\n+\n+\n
    16
    \n-
    17namespace Dune {
    \n-
    18
    \n-
    19namespace Impl {
    \n+
    17namespace Dune
    \n+
    18{
    \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+
    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 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-
    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+
    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-
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \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:711
    \n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \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,134 +1,82 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_Q2_LOCALFINITEELEMENT_HH\n+6#define DUNE_Q2_LOCALFINITEELEMENT_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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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/_\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+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-19namespace Impl {\n+17namespace _\bD_\bu_\bn_\be\n+18{\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+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 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+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 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-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-_\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+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_\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+_\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 _\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_\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:711\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:838\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/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: raviartthomas03d.hh File Reference\n+dune-localfunctions: pq22d.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-
    raviartthomas03d.hh File Reference
    \n+
    pq22d.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

    \n Classes

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

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-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+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:_\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+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 ===============================================================================\n 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: raviartthomas03d.hh Source File\n+dune-localfunctions: pq22d.hh Source File\n \n \n \n \n \n \n \n@@ -70,125 +70,132 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    raviartthomas03d.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 (C) 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+
    5#ifndef DUNE_PQ22DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PQ22DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <dune/common/fmatrix.hh>
    \n
    9
    \n-\n-\n-\n-\n+\n+
    11
    \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-
    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 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+
    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+
    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+
    68
    \n+
    69 LFEVariant lfeVariant_;
    \n+
    70 };
    \n+
    \n+
    71
    \n+
    72}
    \n+
    73
    \n+
    74#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-
    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-
    Lowest order Raviart-Thomas shape functions on the reference tetrahedron.
    Definition raviartthomas03dlocalbasis.hh:26
    \n-
    Layout map for RT0 elements.
    Definition raviartthomas03dlocalcoefficients.hh:24
    \n-
    Definition raviartthomas03dlocalinterpolation.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:711
    \n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \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,136 +1,156 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_PQ22DLOCALFINITEELEMENT_HH\n+6#define DUNE_PQ22DLOCALFINITEELEMENT_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_\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+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\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-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 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_\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_\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\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_\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+68\n+69 LFEVariant lfeVariant_;\n+70 };\n+71\n+72}\n+73\n+74#endif\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+_\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_\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+_\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-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+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-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+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:711\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:838\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 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-Lowest order Raviart-Thomas shape functions on the reference tetrahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalbasis.hh:26\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-Layout map for RT0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas03dlocalcoefficients.hh:24\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:18\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/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: raviartthomas12dlocalinterpolation.hh File Reference\n+dune-localfunctions: p1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas12dlocalinterpolation.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    p1.hh File Reference
    \n \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n+\n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::RT12DLocalInterpolation< LB >
     First order Raviart-Thomas shape functions on the reference quadrilateral. 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::P1LocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, dim, 1 >
     The local p1 finite element on simplices.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-raviartthomas12dlocalinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+p1.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/_\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:_\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n+ dim, 1 >\n+\u00a0 The local p1 finite element on simplices.\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: raviartthomas12dlocalinterpolation.hh Source File\n+dune-localfunctions: p1.hh Source File\n \n \n \n \n \n \n \n@@ -70,128 +70,46 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas12dlocalinterpolation.hh
    \n+
    p1.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 (C) 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_P1LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_P1LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <vector>
    \n+\n
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\n-
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n-
    15
    \n-
    24 template<class LB>
    \n-
    \n-\n-
    26 {
    \n-
    27
    \n-
    28 public:
    \n-
    29
    \n-
    \n-
    35 RT12DLocalInterpolation (std::bitset<3> s = 0)
    \n-
    36 {
    \n-
    37 using std::sqrt;
    \n-
    38 for (size_t i=0; i<3; i++)
    \n-
    39 sign_[i] = (s[i]) ? -1.0 : 1.0;
    \n-
    40
    \n-
    41 n_[0] = { 0.0, -1.0};
    \n-
    42 n_[1] = {-1.0, 0.0};
    \n-
    43 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};
    \n-
    44
    \n-
    45 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],
    \n-
    46 -1.0*n_[1][0] + 0.5*n_[1][1],
    \n-
    47 0.5*n_[2][0] + 0.5*n_[2][1]};
    \n-
    48 }
    \n-
    \n-
    49
    \n-
    58 template<typename F, typename C>
    \n-
    \n-
    59 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    60 {
    \n-
    61 // f gives v*outer normal at a point on the edge!
    \n-
    62 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    63 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    64
    \n-
    65 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    66
    \n-
    67 out.resize(8);
    \n-
    68 fill(out.begin(), out.end(), 0.0);
    \n-
    69
    \n-
    70 const int qOrder1 = 4;
    \n-
    71 const auto& rule1 = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder1);
    \n-
    72
    \n-
    73 for (auto&& qp : rule1)
    \n-
    74 {
    \n-
    75 Scalar qPos = qp.position();
    \n-
    76 typename LB::Traits::DomainType localPos;
    \n-
    77
    \n-
    78 localPos = {qPos, 0.0};
    \n-
    79 auto y = f(localPos);
    \n-
    80 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];
    \n-
    81 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_[0];
    \n-
    82
    \n-
    83 localPos = {0.0, qPos};
    \n-
    84 y = f(localPos);
    \n-
    85 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];
    \n-
    86 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_[1];
    \n-
    87
    \n-
    88 localPos = {1.0 - qPos, qPos};
    \n-
    89 y = f(localPos);
    \n-
    90 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];
    \n-
    91 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_[2];
    \n-
    92 }
    \n-
    93
    \n-
    94 const int qOrder2 = 8;
    \n-
    95 const auto& rule2 = Dune::QuadratureRules<Vector,2>::rule(Dune::GeometryTypes::simplex(2), qOrder2);
    \n-
    96
    \n-
    97 for (auto&& qp : rule2)
    \n-
    98 {
    \n-
    99 auto qPos = qp.position();
    \n-
    100
    \n-
    101 auto y = f(qPos);
    \n-
    102 out[6] += y[0]*qp.weight();
    \n-
    103 out[7] += y[1]*qp.weight();
    \n-
    104 }
    \n-
    105 }
    \n-
    \n-
    106
    \n-
    107 private:
    \n-
    108 // Edge orientations
    \n-
    109 std::array<typename LB::Traits::RangeFieldType, 3> sign_;
    \n-
    110
    \n-
    111 // Edge normals
    \n-
    112 std::array<typename LB::Traits::DomainType, 3> n_;
    \n-
    113
    \n-
    114 std::array<typename LB::Traits::RangeFieldType, 3> c_;
    \n-
    115 };
    \n-
    \n-
    116}
    \n-
    117#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH
    \n+
    10#warning This header is deprecated
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    22 template<class D, class R, int dim>
    \n+\n+
    24 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n+\n+
    26
    \n+
    27}
    \n+
    28
    \n+
    29#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Raviart-Thomas shape functions on the reference quadrilateral.
    Definition raviartthomas12dlocalinterpolation.hh:26
    \n-
    RT12DLocalInterpolation(std::bitset< 3 > s=0)
    Make set number s, where 0 <= s < 8.
    Definition raviartthomas12dlocalinterpolation.hh:35
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition raviartthomas12dlocalinterpolation.hh:59
    \n-\n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,129 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+p1.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 (C) 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 DUNE_P1LOCALFINITEELEMENT_HH\n+6#define DUNE_P1LOCALFINITEELEMENT_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/_\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 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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-24 template\n-_\b2_\b5 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-26 {\n-27\n-28 public:\n-29\n-_\b3_\b5 _\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-36 {\n-37 using std::sqrt;\n-38 for (size_t i=0; i<3; i++)\n-39 sign_[i] = (s[i]) ? -1.0 : 1.0;\n-40\n-41 n_[0] = { 0.0, -1.0};\n-42 n_[1] = {-1.0, 0.0};\n-43 n_[2] = { 1.0/sqrt(2.0), 1.0/sqrt(2.0)};\n-44\n-45 c_ = { 0.5*n_[0][0] - 1.0*n_[0][1],\n-46 -1.0*n_[1][0] + 0.5*n_[1][1],\n-47 0.5*n_[2][0] + 0.5*n_[2][1]};\n-48 }\n-49\n-58 template\n-_\b5_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-60 {\n-61 // f gives v*outer normal at a point on the edge!\n-62 typedef typename LB::Traits::RangeFieldType Scalar;\n-63 typedef typename LB::Traits::DomainFieldType Vector;\n-64\n-65 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-66\n-67 out.resize(8);\n-68 fill(out.begin(), out.end(), 0.0);\n-69\n-70 const int qOrder1 = 4;\n-71 const auto& rule1 = Dune::QuadratureRules::rule(Dune::\n-GeometryTypes::simplex(1), qOrder1);\n-72\n-73 for (auto&& qp : rule1)\n-74 {\n-75 Scalar qPos = qp.position();\n-76 typename LB::Traits::DomainType localPos;\n-77\n-78 localPos = {qPos, 0.0};\n-79 auto y = f(localPos);\n-80 out[0] += (y[0]*n_[0][0] + y[1]*n_[0][1])*qp.weight()*sign_[0]/c_[0];\n-81 out[3] += (y[0]*n_[0][0] + y[1]*n_[0][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n-[0];\n-82\n-83 localPos = {0.0, qPos};\n-84 y = f(localPos);\n-85 out[1] += (y[0]*n_[1][0] + y[1]*n_[1][1])*qp.weight()*sign_[1]/c_[1];\n-86 out[4] += (y[0]*n_[1][0] + y[1]*n_[1][1])*(1.0 - 2.0*qPos)*qp.weight()/c_\n-[1];\n-87\n-88 localPos = {1.0 - qPos, qPos};\n-89 y = f(localPos);\n-90 out[2] += (y[0]*n_[2][0] + y[1]*n_[2][1])*qp.weight()*sign_[2]/c_[2];\n-91 out[5] += (y[0]*n_[2][0] + y[1]*n_[2][1])*(2.0*qPos - 1.0)*qp.weight()/c_\n-[2];\n-92 }\n-93\n-94 const int qOrder2 = 8;\n-95 const auto& rule2 = Dune::QuadratureRules::rule(Dune::\n-GeometryTypes::simplex(2), qOrder2);\n-96\n-97 for (auto&& qp : rule2)\n-98 {\n-99 auto qPos = qp.position();\n-100\n-101 auto y = f(qPos);\n-102 out[6] += y[0]*qp.weight();\n-103 out[7] += y[1]*qp.weight();\n-104 }\n-105 }\n-106\n-107 private:\n-108 // Edge orientations\n-109 std::array sign_;\n-110\n-111 // Edge normals\n-112 std::array n_;\n-113\n-114 std::array c_;\n-115 };\n-116}\n-117#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALINTERPOLATION_HH\n+10#warning This header is deprecated\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+22 template\n+_\b2_\b3 using _\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+24 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n+25 = _\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,_\b1_\b>;\n+26\n+27}\n+28\n+29#endif\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_\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:26\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:35\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 &ff, 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:59\n-_\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_\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:838\n ===============================================================================\n 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: raviartthomas12dlocalcoefficients.hh File Reference\n+dune-localfunctions: qk.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas12dlocalcoefficients.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    qk.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-Classes

    class  Dune::RT12DLocalCoefficients
     Layout map for Raviart-Thomas-1 elements on the reference triangle. More...
     
    \n \n \n \n+

    \n Namespaces

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

    \n+Typedefs

    template<class D , class R , int d, int k>
    using Dune::QkLocalFiniteElement = LagrangeCubeLocalFiniteElement< D, R, d, k >
     General Lagrange finite element for cubes with arbitrary dimension and polynomial order.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-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+ * _\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+qk.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/_\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_\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R, d, k\n+ >\n+\u00a0 General Lagrange finite element for cubes with arbitrary dimension and\n+ polynomial 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/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: raviartthomas12dlocalcoefficients.hh Source File\n+dune-localfunctions: qk.hh Source File\n \n \n \n \n \n \n \n@@ -70,82 +70,46 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas12dlocalcoefficients.hh
    \n+
    qk.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 (C) 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-
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_QK_LOCALFINITEELEMENT_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_QK_LOCALFINITEELEMENT_HH
    \n+
    8
    \n+\n
    10
    \n-
    11#include "../../common/localkey.hh"
    \n+
    11#warning This header is deprecated
    \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-
    55}
    \n-
    56#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS12DLOCALCOEFFICIENTS_HH
    \n+
    25 template<class D, class R, int d, int k>
    \n+\n+
    27 [[deprecated("use LagrangeCubeLocalFiniteElement instead")]]
    \n+\n+
    29
    \n+
    30}
    \n+
    31
    \n+
    32#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:711
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,80 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+qk.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 (C) 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-7\n-8#include \n-9#include \n+5\n+6#ifndef DUNE_LOCALFUNCTIONS_QK_LOCALFINITEELEMENT_HH\n+7#define DUNE_LOCALFUNCTIONS_QK_LOCALFINITEELEMENT_HH\n+8\n+9#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 10\n-11#include \"../../common/localkey.hh\"\n+11#warning This header is deprecated\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+25 template\n+_\b2_\b6 using _\bQ_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 [[deprecated(\"use LagrangeCubeLocalFiniteElement instead\")]]\n+28 = _\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_\b,_\bk_\b>;\n+29\n+30}\n+31\n+32#endif\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: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\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+_\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:711\n ===============================================================================\n 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: raviartthomas12dlocalbasis.hh File Reference\n+dune-localfunctions: lagrangelfecache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,48 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas12dlocalbasis.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    lagrangelfecache.hh File Reference
    \n \n
    \n-
    #include <numeric>
    \n-#include <vector>
    \n-#include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \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::RT12DLocalBasis< D, R >
     First order Raviart-Thomas shape functions on the reference triangle. 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,25 +1,32 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-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+ * _\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_\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+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/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: raviartthomas12dlocalbasis.hh Source File\n+dune-localfunctions: lagrangelfecache.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,145 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas12dlocalbasis.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 (C) 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_LAGRANGE_LAGRANGELFECACHE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n
    7
    \n-
    8#include <numeric>
    \n-
    9#include <vector>
    \n+
    8#include <tuple>
    \n+
    9#include <utility>
    \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+
    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
    \n+
    25
    \n+
    26namespace Impl {
    \n+
    27
    \n+
    28 // Provide implemented Lagrange local finite elements
    \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+
    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 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+
    105
    \n+
    117template<class D, class R, std::size_t dim, std::size_t order>
    \n+\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+
    120
    \n+
    121
    \n+
    122} // namespace Dune
    \n+
    123
    \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+
    125
    \n+
    126
    \n+
    127#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH
    \n+\n+\n+\n+\n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    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,228 +1,164 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LAGRANGE_LAGRANGELFECACHE_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_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-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+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\n+25\n+26namespace Impl {\n+27\n+28 // Provide implemented Lagrange local finite elements\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+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 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+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 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+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 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+120\n+121\n+122} // namespace Dune\n+123\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+125\n+126\n+127#endif // DUNE_LOCALFUNCTIONS_LAGRANGE_LAGRANGELFECACHE_HH\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_\bp_\by_\br_\ba_\bm_\bi_\bd_\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+_\bp_\b0_\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:34\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:42\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+_\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/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: raviartthomas0cube3d.hh File Reference\n+dune-localfunctions: pk2d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,40 +65,54 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0cube3d.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    pk2d.hh File Reference
    \n \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include <dune/localfunctions/common/localfiniteelementtraits.hh>
    \n-#include "raviartthomas0cube3d/raviartthomas0cube3dall.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::RT0Cube3DLocalFiniteElement< D, R >
     Zero order Raviart-Thomas shape functions on cubes. More...
    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...
     
    \n \n \n \n+

    \n Namespaces

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

    \n+Typedefs

    template<class D , class R , unsigned int k>
    using Dune::Pk2DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 2, k >
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,34 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-raviartthomas0cube3d.hh File Reference\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 | _\bT_\by_\bp_\be_\bd_\be_\bf_\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 \"_\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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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:_\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:_\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n+ 2, k >\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: raviartthomas0cube3d.hh Source File\n+dune-localfunctions: pk2d.hh Source File\n \n \n \n \n \n \n \n@@ -70,119 +70,152 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas0cube3d.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 (C) 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_PK2DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PK2DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <dune/geometry/type.hh>
    \n+
    8#include <cstddef>
    \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-
    \n+
    10#include <dune/geometry/type.hh>
    \n+
    11
    \n+\n+\n+\n+
    15
    \n+
    16#warning This header is deprecated
    \n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n+
    20
    \n+
    25 template<class D, class R, unsigned int k>
    \n+\n+
    27 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n+\n+
    29
    \n+
    30
    \n+
    32
    \n+
    39 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+
    41 typedef typename Geometry::ctype DF;
    \n+
    42 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,2,k> LocalBasis;
    \n+
    43 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \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+
    45 public:
    \n+
    \n+
    49 struct Traits {
    \n+\n+\n+
    52 LocalInterpolation,
    \n+
    53 typename Basis::Traits
    \n+\n+
    55 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> Coefficients;
    \n+
    56 };
    \n+
    \n+
    57
    \n+
    58 private:
    \n+
    59 static const GeometryType gt;
    \n+
    60 static const LocalBasis localBasis;
    \n+
    61 static const LocalInterpolation localInterpolation;
    \n+
    62
    \n+
    63 typename Traits::Basis basis_;
    \n+
    64 typename Traits::Interpolation interpolation_;
    \n+
    65 typename Traits::Coefficients coefficients_;
    \n+
    66
    \n+
    67 public:
    \n+
    69
    \n+
    82 template<class VertexOrder>
    \n+
    \n+
    83 Pk2DFiniteElement(const Geometry &geometry,
    \n+
    84 const VertexOrder& vertexOrder) :
    \n+
    85 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n+
    86 coefficients_(vertexOrder.begin(0, 0))
    \n+
    87 { }
    \n+
    \n+
    88
    \n+
    89 const typename Traits::Basis& basis() const { return basis_; }
    \n+
    \n+
    90 const typename Traits::Interpolation& interpolation() const
    \n+
    91 { return interpolation_; }
    \n+
    \n+
    \n+
    92 const typename Traits::Coefficients& coefficients() const
    \n+
    93 { return coefficients_; }
    \n+
    \n+
    94 const GeometryType &type() const { return gt; }
    \n+
    95 };
    \n+
    \n+
    96
    \n+
    97 template<class Geometry, class RF, std::size_t k>
    \n+
    98 const GeometryType
    \n+
    99 Pk2DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n+
    100
    \n+
    101 template<class Geometry, class RF, std::size_t k>
    \n+
    102 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalBasis
    \n+
    103 Pk2DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n+
    104
    \n+
    105 template<class Geometry, class RF, std::size_t k>
    \n+
    106 const typename Pk2DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n+
    107 Pk2DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n+
    108 LocalInterpolation();
    \n+
    109
    \n+
    111
    \n+
    121 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+\n+
    124
    \n+
    126
    \n+
    140 template<class VertexOrder>
    \n+
    \n+
    141 const FiniteElement make(const Geometry& geometry,
    \n+
    142 const VertexOrder& vertexOrder)
    \n+
    143 { return FiniteElement(geometry, vertexOrder); }
    \n+
    \n+
    144 };
    \n+
    \n+
    145}
    \n+
    146
    \n+
    147#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-
    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-
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0cube3dall.hh:30
    \n-
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0cube3dall.hh:157
    \n-
    Layout map for RT0 elements on quadrilaterals.
    Definition raviartthomas0cube3dall.hh:215
    \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+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n+
    Langrange finite element of arbitrary order on triangles.
    Definition pk2d.hh:40
    \n+
    Pk2DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk2DFiniteElement
    Definition pk2d.hh:83
    \n+
    const Traits::Interpolation & interpolation() const
    Definition pk2d.hh:90
    \n+
    const Traits::Basis & basis() const
    Definition pk2d.hh:89
    \n+
    const Traits::Coefficients & coefficients() const
    Definition pk2d.hh:92
    \n+
    const GeometryType & type() const
    Definition pk2d.hh:94
    \n+
    Definition pk2d.hh:49
    \n+
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk2d.hh:50
    \n+
    Impl::LagrangeSimplexLocalCoefficients< 2, k > Coefficients
    Definition pk2d.hh:55
    \n+
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk2d.hh:54
    \n+
    Factory for Pk2DFiniteElement objects.
    Definition pk2d.hh:122
    \n+
    Pk2DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk2d.hh:123
    \n+
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk2DFiniteElementFactory
    Definition pk2d.hh:141
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,130 +1,169 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_PK2DLOCALFINITEELEMENT_HH\n+6#define DUNE_PK2DLOCALFINITEELEMENT_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_\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_\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+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+16#warning This header is deprecated\n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n+20\n+25 template\n+_\b2_\b6 using _\bP_\bk_\b2_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n+28 = _\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,_\bk_\b>;\n+29\n+30\n+32\n+39 template\n+_\b4_\b0 class _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n+41 typedef typename Geometry::ctype DF;\n+42 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n+43 typedef Impl::LagrangeSimplexLocalInterpolation\n+LocalInterpolation;\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+45 public:\n+_\b4_\b9 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+_\b5_\b0 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+51 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+52 LocalInterpolation,\n+53 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+_\b5_\b4 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b5_\b5 typedef Impl::LagrangeSimplexLocalCoefficients<2,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+56 };\n+57\n+58 private:\n+59 static const GeometryType gt;\n+60 static const LocalBasis localBasis;\n+61 static const LocalInterpolation localInterpolation;\n+62\n+63 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n+64 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n+65 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n+66\n+67 public:\n+69\n+82 template\n+_\b8_\b3 _\bP_\bk_\b2_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n+84 const VertexOrder& vertexOrder) :\n+85 basis_(localBasis, geometry), interpolation_(localInterpolation),\n+86 coefficients_(vertexOrder.begin(0, 0))\n+87 { }\n+88\n+_\b8_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\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_\b2 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+93 { return coefficients_; }\n+_\b9_\b4 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n+95 };\n+96\n+97 template\n+98 const GeometryType\n+99 Pk2DFiniteElement::gt(GeometryTypes::simplex(2));\n+100\n+101 template\n+102 const typename Pk2DFiniteElement::LocalBasis\n+103 Pk2DFiniteElement::localBasis = LocalBasis();\n+104\n+105 template\n+106 const typename Pk2DFiniteElement::LocalInterpolation\n+107 Pk2DFiniteElement::localInterpolation =\n+108 LocalInterpolation();\n+109\n+111\n+121 template\n+_\b1_\b2_\b2 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_\b2_\b3 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+124\n+126\n+140 template\n+_\b1_\b4_\b1 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n+142 const VertexOrder& vertexOrder)\n+143 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n+144 };\n+145}\n+146\n+147#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_\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-_\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:_\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-Lowest order Raviart-Thomas shape functions on the reference hexahedron.\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-Lowest order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:157\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-Layout map for RT0 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:215\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:_\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:838\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:40\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: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:_\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:90\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:89\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:92\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:94\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:49\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:50\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:55\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:54\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:122\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:123\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:141\n ===============================================================================\n 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: raviartthomas0cube3dall.hh File Reference\n+dune-localfunctions: p2.hh File Reference\n \n \n \n \n \n \n \n@@ -65,50 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomas0cube3dall.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    p2.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/localfunctions/common/localinterpolation.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::RT0Cube3DLocalBasis< D, R >
     Lowest order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    class  Dune::RT0Cube3DLocalInterpolation< LB >
     Lowest order Raviart-Thomas shape functions on the reference hexahedron. More...
     
    class  Dune::RT0Cube3DLocalCoefficients
     Layout map for RT0 elements on quadrilaterals. More...
     
    \n \n \n \n+

    \n Namespaces

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

    \n+Typedefs

    template<class D , class R , int d>
    using Dune::P2LocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, d, 2 >
     Second-order Lagrange finite element on the reference simplex with compile-time dimension.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-raviartthomas0cube3dall.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/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+p2.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/_\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:_\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 Lowest order Raviart-Thomas shape functions on the reference\n- hexahedron. _\bM_\bo_\br_\be_\b._\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 Lowest order Raviart-Thomas shape functions on the reference\n- hexahedron. _\bM_\bo_\br_\be_\b._\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 Layout map for RT0 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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R, d,\n+ 2 >\n+\u00a0 Second-order Lagrange finite element on the reference simplex with\n+ compile-time dimension.\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: raviartthomas0cube3dall.hh Source File\n+dune-localfunctions: p2.hh Source File\n \n \n \n \n \n \n \n@@ -70,281 +70,46 @@\n
    \n \n \n \n \n \n \n
    \n-
    raviartthomas0cube3dall.hh
    \n+
    p2.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 (C) 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+
    5#ifndef DUNE_P2_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_P2_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <numeric>
    \n-
    10#include <vector>
    \n+\n+
    9
    \n+
    10#warning This header is deprecated
    \n
    11
    \n-
    12#include <dune/common/fmatrix.hh>
    \n-
    13
    \n-\n-\n-\n-
    17
    \n-
    18namespace Dune
    \n-
    19{
    \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[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-
    155 template<class LB>
    \n-
    \n-\n-
    157 {
    \n-
    158 public:
    \n-
    159
    \n-
    \n-
    161 RT0Cube3DLocalInterpolation (unsigned int s = 0)
    \n-
    162 {
    \n-
    163 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;
    \n-
    164 if (s&1) sign0 *= -1.0;
    \n-
    165 if (s&2) sign1 *= -1.0;
    \n-
    166 if (s&4) sign2 *= -1.0;
    \n-
    167 if (s&8) sign3 *= -1.0;
    \n-
    168 if (s&16) sign4 *= -1.0;
    \n-
    169 if (s&32) sign5 *= -1.0;
    \n-
    170
    \n-
    171 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;
    \n-
    172 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;
    \n-
    173 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;
    \n-
    174 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;
    \n-
    175 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;
    \n-
    176 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;
    \n-
    177
    \n-
    178 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;
    \n-
    179 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;
    \n-
    180 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;
    \n-
    181 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;
    \n-
    182 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;
    \n-
    183 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;
    \n-
    184 }
    \n-
    \n-
    185
    \n-
    186 template<typename F, typename C>
    \n-
    \n-
    187 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    188 {
    \n-
    189 // f gives v*outer normal at a point on the edge!
    \n-
    190 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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-
    215 {
    \n-
    216 public:
    \n-
    \n-\n-
    219 {
    \n-
    220 for (std::size_t i=0; i<6; i++)
    \n-
    221 li[i] = LocalKey(i,1,0);
    \n-
    222 }
    \n-
    \n-
    223
    \n-
    \n-
    225 std::size_t size () const
    \n-
    226 {
    \n-
    227 return 6;
    \n-
    228 }
    \n-
    \n-
    229
    \n-
    \n-
    231 const LocalKey& localKey (std::size_t i) const
    \n-
    232 {
    \n-
    233 return li[i];
    \n-
    234 }
    \n-
    \n-
    235
    \n-
    236 private:
    \n-
    237 std::vector<LocalKey> li;
    \n-
    238 };
    \n-
    \n-
    239
    \n-
    240}
    \n-
    241#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH
    \n-\n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    19 template<class D, class R, int d>
    \n+\n+
    21 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n+\n+
    23
    \n+
    24}
    \n+
    25
    \n+
    26#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    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-
    Lowest order Raviart-Thomas shape functions on the reference hexahedron.
    Definition raviartthomas0cube3dall.hh:157
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition raviartthomas0cube3dall.hh:187
    \n-
    RT0Cube3DLocalInterpolation(unsigned int s=0)
    Make set number s, where 0 <= s < 64.
    Definition raviartthomas0cube3dall.hh:161
    \n-
    Layout map for RT0 elements on quadrilaterals.
    Definition raviartthomas0cube3dall.hh:215
    \n-
    RT0Cube3DLocalCoefficients()
    Standard constructor.
    Definition raviartthomas0cube3dall.hh:218
    \n-
    std::size_t size() const
    number of coefficients
    Definition raviartthomas0cube3dall.hh:225
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition raviartthomas0cube3dall.hh:231
    \n-\n-\n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,300 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+p2.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 (C) 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+5#ifndef DUNE_P2_LOCALFINITEELEMENT_HH\n+6#define DUNE_P2_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10#include \n+8#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+9\n+10#warning This header is deprecated\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-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_\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-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-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-155 template\n-_\b1_\b5_\b6 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-157 {\n-158 public:\n-159\n-_\b1_\b6_\b1 _\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-162 {\n-163 sign0 = sign1 = sign2 = sign3 = sign4 = sign5 = 1.0;\n-164 if (s&1) sign0 *= -1.0;\n-165 if (s&2) sign1 *= -1.0;\n-166 if (s&4) sign2 *= -1.0;\n-167 if (s&8) sign3 *= -1.0;\n-168 if (s&16) sign4 *= -1.0;\n-169 if (s&32) sign5 *= -1.0;\n-170\n-171 m0[0] = 0.0; m0[1] = 0.5; m0[2] = 0.5;\n-172 m1[0] = 1.0; m1[1] = 0.5; m1[2] = 0.5;\n-173 m2[0] = 0.5; m2[1] = 0.0; m2[2] = 0.5;\n-174 m3[0] = 0.5; m3[1] = 1.0; m3[2] = 0.5;\n-175 m4[0] = 0.5; m4[1] = 0.5; m4[2] = 0.0;\n-176 m5[0] = 0.5; m5[1] = 0.5; m5[2] = 1.0;\n-177\n-178 n0[0] = -1.0; n0[1] = 0.0; n0[2] = 0.0;\n-179 n1[0] = 1.0; n1[1] = 0.0; n1[2] = 0.0;\n-180 n2[0] = 0.0; n2[1] = -1.0; n2[2] = 0.0;\n-181 n3[0] = 0.0; n3[1] = 1.0; n3[2] = 0.0;\n-182 n4[0] = 0.0; n4[1] = 0.0; n4[2] =-1.0;\n-183 n5[0] = 0.0; n5[1] = 0.0; n5[2] = 1.0;\n-184 }\n-185\n-186 template\n-_\b1_\b8_\b7 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-188 {\n-189 // f gives v*outer normal at a point on the edge!\n-190 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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_\b4 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-215 {\n-216 public:\n-_\b2_\b1_\b8 _\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-219 {\n-220 for (std::size_t i=0; i<6; i++)\n-221 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i,1,0);\n-222 }\n-223\n-_\b2_\b2_\b5 std::size_t _\bs_\bi_\bz_\be () const\n-226 {\n-227 return 6;\n-228 }\n-229\n-_\b2_\b3_\b1 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (std::size_t i) const\n-232 {\n-233 return li[i];\n-234 }\n-235\n-236 private:\n-237 std::vector li;\n-238 };\n-239\n-240}\n-241#endif // DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS0_CUBE3D_ALL_HH\n-_\bl_\bo_\bc_\ba_\bl_\bk_\be_\by_\b._\bh_\bh\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+19 template\n+_\b2_\b0 using _\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+21 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n+22 = _\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_\b,_\b2_\b>;\n+23\n+24}\n+25\n+26#endif\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_\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:34\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:42\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:23\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-Lowest order Raviart-Thomas shape functions on the reference hexahedron.\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-Lowest order Raviart-Thomas shape functions on the reference hexahedron.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:157\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 &ff, std::vector< C > &out) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:187\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:161\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-Layout map for RT0 elements on quadrilaterals.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn raviartthomas0cube3dall.hh:215\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:218\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:225\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:231\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+_\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:838\n ===============================================================================\n 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: raviartthomassimplex.hh File Reference\n+dune-localfunctions: prismp1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,45 +65,40 @@\n \n \n \n \n \n \n \n
    \n \n-
    raviartthomassimplex.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    prismp1.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+\n

    Go to the source code of this file.

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

    \n Namespaces

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

    \n+Typedefs

    template<class D , class R >
    using Dune::PrismP1LocalFiniteElement = LagrangePrismLocalFiniteElement< D, R, 1 >
     First-order Lagrangian finite element on a prism.
     
    \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,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+prismp1.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/_\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 _\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-\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\br_\bi_\bs_\bm_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n+ 1 >\n+\u00a0 First-order Lagrangian finite element on a prism.\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: raviartthomassimplex.hh Source File\n+dune-localfunctions: prismp1.hh Source File\n \n \n \n \n \n \n \n@@ -70,66 +70,46 @@\n \n \n \n \n \n \n \n
    \n-
    raviartthomassimplex.hh
    \n+
    prismp1.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 (C) 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_P13DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_P13DLOCALFINITEELEMENT_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-
    \n-
    52 };
    \n-
    \n-
    53} // namespace Dune
    \n-
    54
    \n-
    55#endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_SIMPLEX_HH
    \n-\n+\n+
    9
    \n+
    10#warning This header is deprecated
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    19 template<class D, class R>
    \n+\n+
    21 [[deprecated("use LagrangePrismLocalFiniteElement instead")]]
    \n+\n+
    23
    \n+
    24}
    \n+
    25
    \n+
    26#endif
    \n+\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:421
    \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+
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:652
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,72 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+prismp1.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 (C) 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_P13DLOCALFINITEELEMENT_HH\n+6#define DUNE_P13DLOCALFINITEELEMENT_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-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+8#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+9\n+10#warning This header is deprecated\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+19 template\n+_\b2_\b0 using _\bP_\br_\bi_\bs_\bm_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+21 [[deprecated(\"use LagrangePrismLocalFiniteElement instead\")]]\n+22 = _\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+23\n+24}\n+25\n+26#endif\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\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_\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:421\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:_\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:652\n ===============================================================================\n 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: brezzidouglasmarini.hh File Reference\n+dune-localfunctions: p0localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,25 +65,41 @@\n \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini.hh File Reference
    \n+ \n+
    p0localbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh>
    \n-#include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.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::P0LocalBasis< D, R, d >
     Constant shape function. 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,13 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bp_\b0\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\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+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 Constant shape 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/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: brezzidouglasmarini.hh Source File\n+dune-localfunctions: p0localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,35 +70,109 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini.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 (C) 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_P0LOCALBASIS_HH
    \n+
    6#define DUNE_P0LOCALBASIS_HH
    \n
    7
    \n-
    8// BDM implementations with compile-time order
    \n-\n-\n+
    8#include <numeric>
    \n+
    9
    \n+
    10#include <dune/common/fmatrix.hh>
    \n
    11
    \n-
    12#endif // #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n-\n-\n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    28 template<class D, class R, int d>
    \n+
    \n+\n+
    30 {
    \n+
    31 public:
    \n+
    33 typedef LocalBasisTraits<D,d,Dune::FieldVector<D,d>,R,1,Dune::FieldVector<R,1>,
    \n+
    34 Dune::FieldMatrix<R,1,d> > Traits;
    \n+
    35
    \n+
    \n+
    37 unsigned int size () const
    \n+
    38 {
    \n+
    39 return 1;
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    \n+
    43 inline void evaluateFunction (const typename Traits::DomainType&,
    \n+
    44 std::vector<typename Traits::RangeType>& out) const
    \n+
    45 {
    \n+
    46 out.resize(1);
    \n+
    47 out[0] = 1;
    \n+
    48 }
    \n+
    \n+
    49
    \n+
    51 inline void
    \n+
    \n+
    52 evaluateJacobian (const typename Traits::DomainType&, // position
    \n+
    53 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    54 {
    \n+
    55 out.resize(1);
    \n+
    56 for (int i=0; i<d; i++)
    \n+
    57 out[0][0][i] = 0;
    \n+
    58 }
    \n+
    \n+
    59
    \n+
    \n+
    65 void partial(const std::array<unsigned int,d>& order,
    \n+
    66 const typename Traits::DomainType& in,
    \n+
    67 std::vector<typename Traits::RangeType>& out) const
    \n+
    68 {
    \n+
    69 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    70 if (totalOrder == 0) {
    \n+
    71 evaluateFunction(in, out);
    \n+
    72 } else {
    \n+
    73 out.resize(1);
    \n+
    74 out[0] = 0;
    \n+
    75 }
    \n+
    76 }
    \n+
    \n+
    77
    \n+
    \n+
    79 unsigned int order () const
    \n+
    80 {
    \n+
    81 return 0;
    \n+
    82 }
    \n+
    \n+
    83 };
    \n+
    \n+
    84
    \n+
    85}
    \n+
    86
    \n+
    87#endif
    \n+
    Definition bdfmcube.hh:18
    \n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Constant shape function.
    Definition p0localbasis.hh:30
    \n+
    unsigned int order() const
    Polynomial order of the shape functions.
    Definition p0localbasis.hh:79
    \n+
    void evaluateJacobian(const typename Traits::DomainType &, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition p0localbasis.hh:52
    \n+
    void evaluateFunction(const typename Traits::DomainType &, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition p0localbasis.hh:43
    \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:65
    \n+
    unsigned int size() const
    number of shape functions
    Definition p0localbasis.hh:37
    \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:34
    \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,120 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_P0LOCALBASIS_HH\n+6#define DUNE_P0LOCALBASIS_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_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\n+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+28 template\n+_\b2_\b9 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+30 {\n+31 public:\n+33 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_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+35\n+_\b3_\b7 unsigned int _\bs_\bi_\bz_\be () const\n+38 {\n+39 return 1;\n+40 }\n+41\n+_\b4_\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&,\n+44 std::vector& out) const\n+45 {\n+46 out.resize(1);\n+47 out[0] = 1;\n+48 }\n+49\n+51 inline void\n+_\b5_\b2 _\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+53 std::vector& out) const // return value\n+54 {\n+55 out.resize(1);\n+56 for (int i=0; i& _\bo_\br_\bd_\be_\br,\n+66 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 auto totalOrder = std::accumulate(_\bo_\br_\bd_\be_\br.begin(), _\bo_\br_\bd_\be_\br.end(), 0);\n+70 if (totalOrder == 0) {\n+71 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn(in, out);\n+72 } else {\n+73 out.resize(1);\n+74 out[0] = 0;\n+75 }\n+76 }\n+77\n+_\b7_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+80 {\n+81 return 0;\n+82 }\n+83 };\n+84\n+85}\n+86\n+87#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:34\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:42\n+_\bD_\bu_\bn_\be_\b:_\b:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bB_\ba_\bs_\bi_\bs\n+Constant shape function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:30\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:79\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:52\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:43\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:65\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:37\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:34\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/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: dualmortarbasis.hh File Reference\n+dune-localfunctions: p0localinterpolation.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+
    p0localinterpolation.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/dualmortarbasis/dualp1.hh>
    \n-#include <dune/localfunctions/dualmortarbasis/dualq1.hh>
    \n+
    #include <vector>
    \n+#include <dune/geometry/referenceelements.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

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

    \n+Classes

    class  Dune::P0LocalInterpolation< LB >
     
    \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,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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:_\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 ===============================================================================\n 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: dualmortarbasis.hh Source File\n+dune-localfunctions: p0localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,34 +70,76 @@\n
    \n \n \n \n \n \n \n
    \n-
    dualmortarbasis.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 (C) 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_P0LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_P0LOCALINTERPOLATION_HH
    \n
    7
    \n-\n-\n-
    10
    \n-
    11#endif // #ifndef DUNE_LOCALFUNCTIONS_DUALMORTARBASIS_HH
    \n-\n-\n+
    8#include <vector>
    \n+
    9#include <dune/geometry/referenceelements.hh>
    \n+\n+
    11
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    16 template<class LB>
    \n+
    \n+\n+
    18 {
    \n+
    19 public:
    \n+
    \n+
    20 P0LocalInterpolation (const GeometryType& gt) : gt_(gt)
    \n+
    21 {}
    \n+
    \n+
    22
    \n+
    24 template<typename F, typename C>
    \n+
    \n+
    25 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    26 {
    \n+
    27 typedef typename LB::Traits::DomainType DomainType;
    \n+
    28 typedef typename LB::Traits::DomainFieldType DF;
    \n+
    29 const int dim=LB::Traits::dimDomain;
    \n+
    30
    \n+
    31 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \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+
    Definition bdfmcube.hh:18
    \n+
    Definition p0localinterpolation.hh:18
    \n+
    P0LocalInterpolation(const GeometryType &gt)
    Definition p0localinterpolation.hh:20
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition p0localinterpolation.hh:25
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,70 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_P0LOCALINTERPOLATION_HH\n+6#define DUNE_P0LOCALINTERPOLATION_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-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+8#include \n+9#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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+11\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+16 template\n+_\b1_\b7 class _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+18 {\n+19 public:\n+_\b2_\b0 _\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+21 {}\n+22\n+24 template\n+_\b2_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+26 {\n+27 typedef typename LB::Traits::DomainType DomainType;\n+28 typedef typename LB::Traits::DomainFieldType DF;\n+29 const int dim=LB::Traits::dimDomain;\n+30\n+31 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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+_\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: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_\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: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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &ff, 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:25\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/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: power.hh File Reference\n+dune-localfunctions: p0localcoefficients.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-
    power.hh File Reference
    \n+
    p0localcoefficients.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

    \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::P0LocalCoefficients
     Layout map for P0 elements. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-power.hh File Reference\n+p0localcoefficients.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:_\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs\n+\u00a0 Layout map for P0 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/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: power.hh Source File\n+dune-localfunctions: p0localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,144 +70,74 @@\n
    \n \n \n \n \n \n \n
    \n-
    power.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 (C) 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_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-
    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-
    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+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    \n+\n+
    24 {
    \n+
    25 public:
    \n+
    \n+
    27 P0LocalCoefficients () : index(0,0,0)
    \n+
    28 {}
    \n+
    \n+
    29
    \n+
    \n+
    31 std::size_t size () const
    \n+
    32 {
    \n+
    33 return 1;
    \n+
    34 }
    \n+
    \n+
    35
    \n+
    \n+
    37 const LocalKey& localKey ([[maybe_unused]] std::size_t i) const
    \n+
    38 {
    \n+
    39 return index;
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    42 private:
    \n+
    43 LocalKey index;
    \n+
    44 };
    \n+
    \n+
    45
    \n+
    46}
    \n+
    47#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:22
    \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:23
    \n+
    Layout map for P0 elements.
    Definition p0localcoefficients.hh:24
    \n+
    P0LocalCoefficients()
    Standard constructor.
    Definition p0localcoefficients.hh:27
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition p0localcoefficients.hh:37
    \n+
    std::size_t size() const
    number of coefficients
    Definition p0localcoefficients.hh:31
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,171 +1,72 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_P0LOCALCOEFFICIENTS_HH\n+6#define DUNE_P0LOCALCOEFFICIENTS_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-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+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+_\b2_\b3 class _\bP_\b0_\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 _\bP_\b0_\bL_\bo_\bc_\ba_\bl_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs () : index(0,0,0)\n+28 {}\n+29\n+_\b3_\b1 std::size_t _\bs_\bi_\bz_\be () const\n+32 {\n+33 return 1;\n+34 }\n+35\n+_\b3_\b7 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+38 {\n+39 return index;\n+40 }\n+41\n+42 private:\n+43 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by index;\n+44 };\n+45\n+46}\n+47#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:22\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+_\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:23\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+Layout map for P0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.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_\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:27\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:37\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: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/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: refined.hh File Reference\n+dune-localfunctions: q1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,30 +65,50 @@\n \n \n \n \n \n \n \n
    \n-
    refined.hh File Reference
    \n+ \n+
    q1.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+\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+Classes

    class  Dune::Q1FiniteElementFactory< Geometry, RF >
     Factory for global-valued Q1 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::Q1LocalFiniteElement = LagrangeCubeLocalFiniteElement< D, R, dim, 1 >
     The local Q1 finite element on cubes.
     
    \n+
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,17 +1,29 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\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-*\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+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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R, dim,\n+ 1 >\n+\u00a0 The local Q1 finite element on cubes.\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: refined.hh Source File\n+dune-localfunctions: q1.hh Source File\n \n \n \n \n \n \n \n@@ -70,29 +70,83 @@\n \n \n \n \n \n \n \n
    \n-
    refined.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 (C) 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_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+
    15#warning This header is deprecated
    \n+
    16
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    27 template<class D, class R, int dim>
    \n+\n+
    29 [[deprecated("use LagrangeCubeLocalFiniteElement instead")]]
    \n+\n+
    31
    \n+
    32
    \n+
    34
    \n+
    39 template<class Geometry, class RF>
    \n+
    \n+\n+\n+
    42 LagrangeCubeLocalFiniteElement<
    \n+
    43 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n+
    44 >,
    \n+
    45 Geometry
    \n+
    46 >
    \n+
    47 {
    \n+\n+
    49 typename Geometry::ctype, RF, Geometry::mydimension, 1
    \n+
    50 > LFE;
    \n+\n+
    52
    \n+
    53 static const LFE lfe;
    \n+
    54
    \n+
    55 public:
    \n+\n+
    58 };
    \n+
    \n+
    59
    \n+
    60 template<class Geometry, class RF>
    \n+
    61 const typename Q1FiniteElementFactory<Geometry, RF>::LFE
    \n+
    62 Q1FiniteElementFactory<Geometry, RF>::lfe;
    \n+
    63}
    \n+
    64
    \n+
    65#endif
    \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:711
    \n+
    Factory for global-valued Q1 elements.
    Definition q1.hh:47
    \n+
    Q1FiniteElementFactory()
    default constructor
    Definition q1.hh:57
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,20 +1,83 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_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+15#warning This header is deprecated\n+16\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+27 template\n+_\b2_\b8 using _\bQ_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+29 [[deprecated(\"use LagrangeCubeLocalFiniteElement instead\")]]\n+30 = _\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,_\b1_\b>;\n+31\n+32\n+34\n+39 template\n+_\b4_\b0 class _\bQ_\b1_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\ba_\bc_\bt_\bo_\br_\by :\n+41 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+42 LagrangeCubeLocalFiniteElement<\n+43 typename Geometry::ctype, RF, Geometry::mydimension, 1\n+44 >,\n+45 Geometry\n+46 >\n+47 {\n+48 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+49 typename Geometry::ctype, RF, Geometry::mydimension, 1\n+50 > _\bL_\bF_\bE;\n+51 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+52\n+53 static const _\bL_\bF_\bE lfe;\n+54\n+55 public:\n+_\b5_\b7 _\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+58 };\n+59\n+60 template\n+61 const typename Q1FiniteElementFactory::LFE\n+62 Q1FiniteElementFactory::lfe;\n+63}\n+64\n+65#endif\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bc_\bu_\bb_\be_\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_\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_\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:711\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:47\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: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/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: lagrange.hh File Reference\n+dune-localfunctions: emptypoints.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-
    lagrange.hh File Reference
    \n+
    emptypoints.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 <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 Classes

    class  Dune::LagrangeLocalFiniteElement< LP, dimDomain, D, R, SF, CF >
     Lagrange local finite elements for a given set of interpolation points. More...
    class  Dune::LagrangePoint< F, dim >
     
    class  Dune::EmptyPointSet< F, dim >
     
    \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,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-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+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-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+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 \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/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: lagrange.hh Source File\n+dune-localfunctions: emptypoints.hh Source File\n \n \n \n \n \n \n \n@@ -70,90 +70,185 @@\n \n \n \n \n \n \n \n
    \n-
    lagrange.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 (C) 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_LAGRANGE_EMPTYPOINTS_HH
    \n+
    6#define DUNE_LAGRANGE_EMPTYPOINTS_HH
    \n
    7
    \n-
    12// Headers for Lagrange elements with run-time order
    \n-\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-\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+
    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+
    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< 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+
    65
    \n+
    66 typedef typename std::vector< LagrangePoint >::const_iterator iterator;
    \n+
    67
    \n+
    68 protected:
    \n+
    \n+
    69 EmptyPointSet ( const std::size_t order )
    \n+
    70 : order_( order )
    \n+
    71 {}
    \n+
    \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+
    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-
    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:100
    \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:23
    \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,92 +1,203 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LAGRANGE_EMPTYPOINTS_HH\n+6#define DUNE_LAGRANGE_EMPTYPOINTS_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\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#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+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+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< 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+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-_\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_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n-_\bp_\bq_\b2_\b2_\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_\bc_\bu_\bb_\be_\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_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\bd_\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+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:_\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:100\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:23\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/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: coeffmatrix.hh File Reference\n+dune-localfunctions: lagrangecoefficients.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-
    coeffmatrix.hh File Reference
    \n+
    lagrangecoefficients.hh File Reference
    \n
    \n
    \n-
    #include <cassert>
    \n-#include <iostream>
    \n-#include <vector>
    \n+
    #include <vector>
    \n #include <dune/common/fvector.hh>
    \n-#include <dune/localfunctions/utility/field.hh>
    \n-#include <dune/localfunctions/utility/tensor.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 \n

    \n Classes

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

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-coeffmatrix.hh File Reference\n-#include \n-#include \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/_\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_\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+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/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: coeffmatrix.hh Source File\n+dune-localfunctions: lagrangecoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,338 +70,81 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    coeffmatrix.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 (C) 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+
    5#ifndef DUNE_LAGRANGECOEFFICIENTS_HH
    \n+
    6#define DUNE_LAGRANGECOEFFICIENTS_HH
    \n+
    7
    \n+
    8#include <vector>
    \n+
    9
    \n
    10#include <dune/common/fvector.hh>
    \n-\n-\n+
    11
    \n+
    12#include <dune/geometry/type.hh>
    \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+\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 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-
    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+
    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
    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:571
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:649
    \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,347 +1,80 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+5#ifndef DUNE_LAGRANGECOEFFICIENTS_HH\n+6#define DUNE_LAGRANGECOEFFICIENTS_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/_\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+11\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-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+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 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-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-_\bt_\be_\bn_\bs_\bo_\br_\b._\bh_\bh\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 _\bf_\bi_\be_\bl_\bd_\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:_\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:571\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:649\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/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: lfematrix.hh File Reference\n+dune-localfunctions: prismp2.hh File Reference\n \n \n \n \n \n \n \n@@ -65,46 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    lfematrix.hh File Reference
    \n+Typedefs
    \n+
    prismp2.hh File Reference
    \n \n
    \n-
    #include <cassert>
    \n-#include <vector>
    \n-#include "field.hh"
    \n+\n

    Go to the source code of this file.

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

    \n-Classes

    class  Dune::LFEMatrix< F >
     
    \n \n \n \n

    \n Namespaces

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

    \n-Functions

    template<class Field >
    std::ostream & Dune::operator<< (std::ostream &out, const LFEMatrix< Field > &mat)
     

    \n+Typedefs

    template<class D , class R >
    using Dune::PrismP2LocalFiniteElement = LagrangePrismLocalFiniteElement< D, R, 2 >
     Second-order Lagrange finite element on a three-dimensional prism.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+prismp2.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/_\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 _\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-\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\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 = _\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< D, R,\n+ 2 >\n+\u00a0 Second-order Lagrange finite element on a three-dimensional prism.\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: lfematrix.hh Source File\n+dune-localfunctions: prismp2.hh Source File\n \n \n \n \n \n \n \n@@ -70,230 +70,46 @@\n
    \n \n \n \n \n \n \n
    \n-
    lfematrix.hh
    \n+
    prismp2.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 (C) 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_PRISM2_3DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PRISM2_3DLOCALFINITEELEMENT_HH
    \n
    7
    \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-
    16 template< class F >
    \n-
    \n-\n-
    18 {
    \n-
    19 typedef LFEMatrix< F > This;
    \n-
    20 typedef std::vector< F > Row;
    \n-
    21 typedef std::vector<Row> RealMatrix;
    \n-
    22
    \n-
    23 public:
    \n-
    24 typedef F Field;
    \n+\n+
    9
    \n+
    10#warning This header is deprecated
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    19 template<class D, class R>
    \n+\n+
    21 [[deprecated("use LagrangePrismLocalFiniteElement instead")]]
    \n+\n+
    23
    \n+
    24}
    \n
    25
    \n-
    \n-
    26 operator const RealMatrix & () const
    \n-
    27 {
    \n-
    28 return matrix_;
    \n-
    29 }
    \n-
    \n-
    30
    \n-
    \n-
    31 operator RealMatrix & ()
    \n-
    32 {
    \n-
    33 return matrix_;
    \n-
    34 }
    \n-
    \n-
    35
    \n-
    36 template <class Vector>
    \n-
    \n-
    37 void row( const unsigned int row, Vector &vec ) const
    \n-
    38 {
    \n-
    39 assert(row<rows());
    \n-
    40 for (int i=0; i<cols(); ++i)
    \n-
    41 field_cast(matrix_[row][i], vec[i]);
    \n-
    42 }
    \n-
    \n-
    43
    \n-
    \n-
    44 const Field &operator() ( const unsigned int row, const unsigned int col ) const
    \n-
    45 {
    \n-
    46 assert(row<rows());
    \n-
    47 assert(col<cols());
    \n-
    48 return matrix_[ row ][ col ];
    \n-
    49 }
    \n-
    \n-
    50
    \n-
    \n-
    51 Field &operator() ( const unsigned int row, const unsigned int col )
    \n-
    52 {
    \n-
    53 assert(row<rows());
    \n-
    54 assert(col<cols());
    \n-
    55 return matrix_[ row ][ col ];
    \n-
    56 }
    \n-
    \n-
    57
    \n-
    \n-
    58 unsigned int rows () const
    \n-
    59 {
    \n-
    60 return rows_;
    \n-
    61 }
    \n-
    \n-
    62
    \n-
    \n-
    63 unsigned int cols () const
    \n-
    64 {
    \n-
    65 return cols_;
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-
    68 const Field *rowPtr ( const unsigned int row ) const
    \n-
    69 {
    \n-
    70 assert(row<rows());
    \n-
    71 return &(matrix_[row][0]);
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    \n-
    74 Field *rowPtr ( const unsigned int row )
    \n-
    75 {
    \n-
    76 assert(row<rows());
    \n-
    77 return &(matrix_[row][0]);
    \n-
    78 }
    \n-
    \n-
    79
    \n-
    \n-
    80 void resize ( const unsigned int rows, const unsigned int cols )
    \n-
    81 {
    \n-
    82 matrix_.resize(rows);
    \n-
    83 for (unsigned int i=0; i<rows; ++i)
    \n-
    84 matrix_[i].resize(cols);
    \n-
    85 rows_ = rows;
    \n-
    86 cols_ = cols;
    \n-
    87 }
    \n-
    \n-
    88
    \n-
    \n-
    89 bool invert ()
    \n-
    90 {
    \n-
    91 using std::abs;
    \n-
    92 assert( rows() == cols() );
    \n-
    93 std::vector<unsigned int> p(rows());
    \n-
    94 for (unsigned int j=0; j<rows(); ++j)
    \n-
    95 p[j] = j;
    \n-
    96 for (unsigned int j=0; j<rows(); ++j)
    \n-
    97 {
    \n-
    98 // pivot search
    \n-
    99 unsigned int r = j;
    \n-
    100 Field max = abs( (*this)(j,j) );
    \n-
    101 for (unsigned int i=j+1; i<rows(); ++i)
    \n-
    102 {
    \n-
    103 if ( abs( (*this)(i,j) ) > max )
    \n-
    104 {
    \n-
    105 max = abs( (*this)(i,j) );
    \n-
    106 r = i;
    \n-
    107 }
    \n-
    108 }
    \n-
    109 if (max == Zero<Field>())
    \n-
    110 return false;
    \n-
    111 // row swap
    \n-
    112 if (r > j)
    \n-
    113 {
    \n-
    114 for (unsigned int k=0; k<cols(); ++k)
    \n-
    115 std::swap( (*this)(j,k), (*this)(r,k) );
    \n-
    116 std::swap( p[j], p[r] );
    \n-
    117 }
    \n-
    118 // transformation
    \n-
    119 Field hr = Unity<Field>()/(*this)(j,j);
    \n-
    120 for (unsigned int i=0; i<rows(); ++i)
    \n-
    121 (*this)(i,j) *= hr;
    \n-
    122 (*this)(j,j) = hr;
    \n-
    123 for (unsigned int k=0; k<cols(); ++k)
    \n-
    124 {
    \n-
    125 if (k==j) continue;
    \n-
    126 for (unsigned int i=0; i<rows(); ++i)
    \n-
    127 {
    \n-
    128 if (i==j) continue;
    \n-
    129 (*this)(i,k) -= (*this)(i,j)*(*this)(j,k);
    \n-
    130 }
    \n-
    131 (*this)(j,k) *= -hr;
    \n-
    132 }
    \n-
    133 }
    \n-
    134 // column exchange
    \n-
    135 Row hv(rows());
    \n-
    136 for (unsigned int i=0; i<rows(); ++i)
    \n-
    137 {
    \n-
    138 for (unsigned int k=0; k<rows(); ++k)
    \n-
    139 hv[ p[k] ] = (*this)(i,k);
    \n-
    140 for (unsigned int k=0; k<rows(); ++k)
    \n-
    141 (*this)(i,k) = hv[k];
    \n-
    142 }
    \n-
    143 return true;
    \n-
    144 }
    \n-
    \n-
    145
    \n-
    146 private:
    \n-
    147 RealMatrix matrix_;
    \n-
    148 unsigned int cols_,rows_;
    \n-
    149 };
    \n-
    \n-
    150
    \n-
    151 template< class Field >
    \n-
    \n-
    152 inline std::ostream &operator<<(std::ostream &out, const LFEMatrix<Field> &mat)
    \n-
    153 {
    \n-
    154 for (unsigned int r=0; r<mat.rows(); ++r)
    \n-
    155 {
    \n-
    156 out << field_cast<double>(mat(r,0));
    \n-
    157 for (unsigned int c=1; c<mat.cols(); ++c)
    \n-
    158 {
    \n-
    159 out << " , " << field_cast<double>(mat(r,c));
    \n-
    160 }
    \n-
    161 out << std::endl;
    \n-
    162 }
    \n-
    163 return out;
    \n-
    164 }
    \n-
    \n-
    165}
    \n-
    166
    \n-
    167#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH
    \n-\n+
    26#endif
    \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:152
    \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:74
    \n-
    unsigned int cols() const
    Definition lfematrix.hh:63
    \n-
    const Field * rowPtr(const unsigned int row) const
    Definition lfematrix.hh:68
    \n-
    void resize(const unsigned int rows, const unsigned int cols)
    Definition lfematrix.hh:80
    \n-
    const Field & operator()(const unsigned int row, const unsigned int col) const
    Definition lfematrix.hh:44
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition lfematrix.hh:37
    \n-
    unsigned int rows() const
    Definition lfematrix.hh:58
    \n-
    bool invert()
    Definition lfematrix.hh:89
    \n-
    F Field
    Definition lfematrix.hh:24
    \n+
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:652
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,226 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be\n+prismp2.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 (C) 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_PRISM2_3DLOCALFINITEELEMENT_HH\n+6#define DUNE_PRISM2_3DLOCALFINITEELEMENT_HH\n 7\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 _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n-18 {\n-19 typedef _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\b _\b> _\bT_\bh_\bi_\bs;\n-20 typedef std::vector< F > Row;\n-21 typedef std::vector RealMatrix;\n-22\n-23 public:\n-_\b2_\b4 typedef F _\bF_\bi_\be_\bl_\bd;\n+8#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+9\n+10#warning This header is deprecated\n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+14\n+19 template\n+_\b2_\b0 using _\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+21 [[deprecated(\"use LagrangePrismLocalFiniteElement instead\")]]\n+22 = _\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+23\n+24}\n 25\n-_\b2_\b6 operator const RealMatrix & () const\n-27 {\n-28 return matrix_;\n-29 }\n-30\n-_\b3_\b1 operator RealMatrix & ()\n-32 {\n-33 return matrix_;\n-34 }\n-35\n-36 template \n-_\b3_\b7 void _\br_\bo_\bw( const unsigned int _\br_\bo_\bw, Vector &vec ) const\n-38 {\n-39 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n-40 for (int i=0; i<_\bc_\bo_\bl_\bs(); ++i)\n-41 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(matrix_[_\br_\bo_\bw][i], vec[i]);\n-42 }\n-43\n-_\b4_\b4 const _\bF_\bi_\be_\bl_\bd &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const unsigned int _\br_\bo_\bw, const unsigned int col )\n-const\n-45 {\n-46 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n-47 assert(col<_\bc_\bo_\bl_\bs());\n-48 return matrix_[ _\br_\bo_\bw ][ col ];\n-49 }\n-50\n-_\b5_\b1 _\bF_\bi_\be_\bl_\bd &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)_\b ( const unsigned int _\br_\bo_\bw, const unsigned int col )\n-52 {\n-53 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n-54 assert(col<_\bc_\bo_\bl_\bs());\n-55 return matrix_[ _\br_\bo_\bw ][ col ];\n-56 }\n-57\n-_\b5_\b8 unsigned int _\br_\bo_\bw_\bs () const\n-59 {\n-60 return rows_;\n-61 }\n-62\n-_\b6_\b3 unsigned int _\bc_\bo_\bl_\bs () const\n-64 {\n-65 return cols_;\n-66 }\n-67\n-_\b6_\b8 const _\bF_\bi_\be_\bl_\bd *_\br_\bo_\bw_\bP_\bt_\br ( const unsigned int _\br_\bo_\bw ) const\n-69 {\n-70 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n-71 return &(matrix_[_\br_\bo_\bw][0]);\n-72 }\n-73\n-_\b7_\b4 _\bF_\bi_\be_\bl_\bd *_\br_\bo_\bw_\bP_\bt_\br ( const unsigned int _\br_\bo_\bw )\n-75 {\n-76 assert(_\br_\bo_\bw<_\br_\bo_\bw_\bs());\n-77 return &(matrix_[_\br_\bo_\bw][0]);\n-78 }\n-79\n-_\b8_\b0 void _\br_\be_\bs_\bi_\bz_\be ( const unsigned int _\br_\bo_\bw_\bs, const unsigned int _\bc_\bo_\bl_\bs )\n-81 {\n-82 matrix_.resize(_\br_\bo_\bw_\bs);\n-83 for (unsigned int i=0; i<_\br_\bo_\bw_\bs; ++i)\n-84 matrix_[i]._\br_\be_\bs_\bi_\bz_\be(_\bc_\bo_\bl_\bs);\n-85 rows_ = _\br_\bo_\bw_\bs;\n-86 cols_ = _\bc_\bo_\bl_\bs;\n-87 }\n-88\n-_\b8_\b9 bool _\bi_\bn_\bv_\be_\br_\bt ()\n-90 {\n-91 using std::abs;\n-92 assert( _\br_\bo_\bw_\bs() == _\bc_\bo_\bl_\bs() );\n-93 std::vector p(_\br_\bo_\bw_\bs());\n-94 for (unsigned int j=0; j<_\br_\bo_\bw_\bs(); ++j)\n-95 p[j] = j;\n-96 for (unsigned int j=0; j<_\br_\bo_\bw_\bs(); ++j)\n-97 {\n-98 // pivot search\n-99 unsigned int r = j;\n-100 _\bF_\bi_\be_\bl_\bd max = abs( (*this)(j,j) );\n-101 for (unsigned int i=j+1; i<_\br_\bo_\bw_\bs(); ++i)\n-102 {\n-103 if ( abs( (*this)(i,j) ) > max )\n-104 {\n-105 max = abs( (*this)(i,j) );\n-106 r = i;\n-107 }\n-108 }\n-109 if (max == _\bZ_\be_\br_\bo_\b<_\bF_\bi_\be_\bl_\bd_\b>())\n-110 return false;\n-111 // row swap\n-112 if (r > j)\n-113 {\n-114 for (unsigned int k=0; k<_\bc_\bo_\bl_\bs(); ++k)\n-115 std::swap( (*this)(j,k), (*this)(r,k) );\n-116 std::swap( p[j], p[r] );\n-117 }\n-118 // transformation\n-119 _\bF_\bi_\be_\bl_\bd hr = _\bU_\bn_\bi_\bt_\by_\b<_\bF_\bi_\be_\bl_\bd_\b>()/(*this)(j,j);\n-120 for (unsigned int i=0; i<_\br_\bo_\bw_\bs(); ++i)\n-121 (*this)(i,j) *= hr;\n-122 (*this)(j,j) = hr;\n-123 for (unsigned int k=0; k<_\bc_\bo_\bl_\bs(); ++k)\n-124 {\n-125 if (k==j) continue;\n-126 for (unsigned int i=0; i<_\br_\bo_\bw_\bs(); ++i)\n-127 {\n-128 if (i==j) continue;\n-129 (*this)(i,k) -= (*this)(i,j)*(*this)(j,k);\n-130 }\n-131 (*this)(j,k) *= -hr;\n-132 }\n-133 }\n-134 // column exchange\n-135 Row hv(_\br_\bo_\bw_\bs());\n-136 for (unsigned int i=0; i<_\br_\bo_\bw_\bs(); ++i)\n-137 {\n-138 for (unsigned int k=0; k<_\br_\bo_\bw_\bs(); ++k)\n-139 hv[ p[k] ] = (*this)(i,k);\n-140 for (unsigned int k=0; k<_\br_\bo_\bw_\bs(); ++k)\n-141 (*this)(i,k) = hv[k];\n-142 }\n-143 return true;\n-144 }\n-145\n-146 private:\n-147 RealMatrix matrix_;\n-148 unsigned int cols_,rows_;\n-149 };\n-150\n-151 template< class Field >\n-_\b1_\b5_\b2 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-153 {\n-154 for (unsigned int r=0; r(mat(r,0));\n-157 for (unsigned int c=1; c(mat(r,c));\n-160 }\n-161 out << std::endl;\n-162 }\n-163 return out;\n-164 }\n-165}\n-166\n-167#endif // #ifndef DUNE_LOCALFUNCTIONS_UTILITY_LFEMATRIX_HH\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+26#endif\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\br_\bi_\bs_\bm_\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:152\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:74\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:63\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:68\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:80\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)\n-const Field & operator()(const unsigned int row, const unsigned int col) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:44\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:37\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:58\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:89\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: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:652\n ===============================================================================\n 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: tensor.hh File Reference\n+dune-localfunctions: pyramidp2.hh File Reference\n \n \n \n \n \n \n \n@@ -65,128 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    tensor.hh File Reference
    \n+Typedefs
    \n+
    pyramidp2.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-Classes

    class  Dune::LFETensor< F, dimD, deriv >
     
    struct  Dune::LFETensor< F, 0, deriv >
     
    struct  Dune::LFETensor< F, 0, 0 >
     
    class  Dune::LFETensor< F, dimD, 0 >
     
    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+\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+Typedefs

    template<class D , class R >
    using Dune::PyramidP2LocalFiniteElement = LagrangePyramidLocalFiniteElement< D, R, 2 >
     Second-order Lagrangian finite element on a three-dimensional pyramid.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,137 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+pyramidp2.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/_\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 _\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:_\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:_\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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+ D, R, 2 >\n+\u00a0 Second-order Lagrangian finite element on a three-dimensional pyramid.\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: tensor.hh Source File\n+dune-localfunctions: pyramidp2.hh Source File\n \n \n \n \n \n \n \n@@ -70,1393 +70,46 @@\n
    \n \n \n \n \n \n \n
    \n-
    tensor.hh
    \n+
    pyramidp2.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 (C) 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_PYRAMIDP2_3DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PYRAMIDP2_3DLOCALFINITEELEMENT_HH
    \n+
    7
    \n+\n+
    9
    \n+
    10#warning This header is deprecated
    \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 rewritting...
    \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-\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,unsigned int deriv>
    \n-
    \n-
    94 struct LFETensor<F,0,deriv>
    \n-
    95 {
    \n-
    96 static const int size = 0;
    \n-
    97 };
    \n-
    \n-
    98
    \n-
    99 template <class F>
    \n-
    \n-
    100 struct LFETensor<F,0,0>
    \n-
    101 {
    \n-
    102 static const int size = 1;
    \n-
    103 };
    \n-
    \n-
    104
    \n-
    105 template <class F,int dimD>
    \n-
    \n-
    106 class LFETensor<F,dimD,0>
    \n-
    107 {
    \n-\n-
    109
    \n-
    110 public:
    \n-
    111 typedef F field_type;
    \n-
    112 static const int size = 1;
    \n-
    113 typedef Dune::FieldVector<F,size> Block;
    \n-
    114
    \n-
    115 template< class FF >
    \n-
    \n-
    116 This &operator= ( const FF &f )
    \n-
    117 {
    \n-
    118 block() = field_cast< F >( f );
    \n-
    119 return *this;
    \n-
    120 }
    \n-
    \n-
    121
    \n-
    \n-
    122 This &operator= ( const Block &b )
    \n-
    123 {
    \n-
    124 block() = b;
    \n-
    125 return *this;
    \n-
    126 }
    \n-
    \n-
    127
    \n-
    \n-\n-
    129 {
    \n-
    130 block() *= f;
    \n-
    131 return *this;
    \n-
    132 }
    \n-
    \n-
    133
    \n-
    \n-
    134 const F &operator[] ( const unsigned int i ) const
    \n-
    135 {
    \n-
    136 return block()[ i ];
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    \n-
    139 F &operator[] ( const unsigned int i )
    \n-
    140 {
    \n-
    141 return block()[ i ];
    \n-
    142 }
    \n-
    \n-
    143
    \n-
    \n-
    144 void axpy(const F& a, const This &y)
    \n-
    145 {
    \n-
    146 block().axpy(a,y.block());
    \n-
    147 }
    \n-
    \n-
    148 template <class Fy>
    \n-
    \n-\n-
    150 {
    \n-
    151 field_cast(y.block(),block());
    \n-
    152 }
    \n-
    \n-
    153
    \n-
    \n-\n-
    155 {
    \n-
    156 return block_;
    \n-
    157 }
    \n-
    \n-
    \n-
    158 const Block &block() const
    \n-
    159 {
    \n-
    160 return block_;
    \n-
    161 }
    \n-
    \n-\n-
    163 };
    \n-
    \n-
    164 // ***********************************************************
    \n-
    165 // Structure for all derivatives up to order deriv
    \n-
    166 // for vector valued function
    \n-
    \n-
    167 namespace DerivativeLayoutNS {
    \n-\n-
    169 }
    \n-
    \n-
    170 template <class F,int dimD,int dimR,unsigned int deriv,
    \n-\n-\n-
    173
    \n-
    174 // Implemnetation for valued based layout
    \n-
    175 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-
    176 struct Derivatives<F,dimD,dimR,deriv,DerivativeLayoutNS::value>
    \n-
    177 : public Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value>
    \n-
    178 {
    \n-\n-
    180 typedef Derivatives<F,dimD,dimR,deriv-1,DerivativeLayoutNS::value> Base;
    \n-\n-
    182
    \n-
    183 typedef F Field;
    \n-
    184 typedef F field_type;
    \n-
    185
    \n-\n-
    187 static const unsigned int dimDomain = dimD;
    \n-
    188 static const unsigned int dimRange = dimR;
    \n-
    189 constexpr static int size = Base::size+ThisLFETensor::size*dimR;
    \n-
    190 typedef Dune::FieldVector<F,size> Block;
    \n-
    191
    \n-
    \n-
    192 This &operator=(const F& f)
    \n-
    193 {
    \n-
    194 block() = f;
    \n-
    195 return *this;
    \n-
    196 }
    \n-
    \n-
    \n-
    197 This &operator=(const Dune::FieldVector<ThisLFETensor,dimR> &t)
    \n-
    198 {
    \n-
    199 tensor_ = t;
    \n-
    200 return *this;
    \n-
    201 }
    \n-
    \n-
    202 template <unsigned int dorder>
    \n-
    \n-
    203 This &operator=(const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &t)
    \n-
    204 {
    \n-
    205 tensor<dorder>() = t;
    \n-
    206 return *this;
    \n-
    207 }
    \n-
    \n-
    \n-\n-
    209 {
    \n-
    210 block() = t;
    \n-
    211 return *this;
    \n-
    212 }
    \n-
    \n-
    213
    \n-
    \n-
    214 This &operator*= ( const field_type &f )
    \n-
    215 {
    \n-
    216 block() *= f;
    \n-
    217 return *this;
    \n-
    218 }
    \n-
    \n-
    219
    \n-
    \n-
    220 void axpy(const F &a, const This &y)
    \n-
    221 {
    \n-
    222 block().axpy(a,y.block());
    \n-
    223 }
    \n-
    \n-
    224
    \n-
    225 // assign with same layout (only different Field)
    \n-
    226 template <class Fy>
    \n-
    \n-\n-
    228 {
    \n-
    229 field_cast(y.block(),block());
    \n-
    230 }
    \n-
    \n-
    231 // assign with different layout (same dimRange)
    \n-
    232 template <class Fy>
    \n-
    \n-\n-
    234 {
    \n-
    235 Base::assign(y);
    \n-
    236 for (int rr=0; rr<dimR; ++rr)
    \n-
    237 tensor_[rr] = y[rr].template tensor<deriv>()[0];
    \n-
    238 }
    \n-
    \n-
    239 // assign with rth component of function
    \n-
    240 template <class Fy,int dimRy>
    \n-
    \n-\n-
    242 {
    \n-
    243 assign<Fy,dimRy>(y.block(),r);
    \n-
    244 }
    \n-
    \n-
    245 // assign with scalar functions to component r
    \n-
    246 template <class Fy>
    \n-
    \n-\n-
    248 {
    \n-
    249 assign(r,y.block());
    \n-
    250 }
    \n-
    \n-
    251 template <class Fy>
    \n-
    \n-\n-
    253 {
    \n-
    254 assign(r,y[0]);
    \n-
    255 }
    \n-
    \n-
    256
    \n-
    \n-\n-
    258 {
    \n-
    259 return reinterpret_cast<Block&>(*this);
    \n-
    260 }
    \n-
    \n-
    \n-
    261 const Block &block() const
    \n-
    262 {
    \n-
    263 return reinterpret_cast<const Block&>(*this);
    \n-
    264 }
    \n-
    \n-
    265
    \n-
    266 template <unsigned int dorder>
    \n-
    \n-
    267 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &tensor() const
    \n-
    268 {
    \n-
    269 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    270 const std::integral_constant<int,dorder> a = {};
    \n-
    271 return tensor(a);
    \n-
    272 }
    \n-
    \n-
    273 template <unsigned int dorder>
    \n-
    \n-
    274 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &tensor()
    \n-
    275 {
    \n-
    276 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    277 return tensor(std::integral_constant<int,dorder>());
    \n-
    278 }
    \n-
    \n-
    279 template <unsigned int dorder>
    \n-
    \n-
    280 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block() const
    \n-
    281 {
    \n-
    282 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    283 const std::integral_constant<int,dorder> a = {};
    \n-
    284 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    285 }
    \n-
    \n-
    286 template <unsigned int dorder>
    \n-
    \n-
    287 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block()
    \n-
    288 {
    \n-
    289 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    290 const std::integral_constant<int,dorder> a = {};
    \n-
    291 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    292 }
    \n-
    \n-
    \n-\n-
    294 return tensor_[r];
    \n-
    295 }
    \n-
    \n-
    \n-
    296 const ThisLFETensor &operator[](int r) const {
    \n-
    297 return tensor_[r];
    \n-
    298 }
    \n-
    \n-
    299 protected:
    \n-
    300 template <class Fy,int dimRy>
    \n-
    \n-
    301 void assign(const FieldVector<Fy,size*dimRy> &y,unsigned int r)
    \n-
    302 {
    \n-
    303 Base::template assign<Fy,dimRy>(reinterpret_cast<const FieldVector<Fy,Base::size*dimRy>&>(y),r);
    \n-
    304 tensor_[0] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[Base::size*dimRy+r*ThisLFETensor::size]);
    \n-
    305 }
    \n-
    \n-
    306 template <class Fy>
    \n-
    \n-
    307 void assign(unsigned int r,const FieldVector<Fy,size/dimR> &y)
    \n-
    308 {
    \n-
    309 Base::assign(r,reinterpret_cast<const FieldVector<Fy,Base::size/dimR>&>(y));
    \n-
    310 tensor_[r] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[Base::size/dimR]);
    \n-
    311 }
    \n-
    \n-
    312 // assign with different layout (same dimRange)
    \n-
    313 template <class Fy,unsigned int dy>
    \n-
    \n-\n-
    315 {
    \n-
    316 Base::assign(y);
    \n-
    317 for (int rr=0; rr<dimR; ++rr)
    \n-
    318 tensor_[rr] = y[rr].template tensor<deriv>()[0];
    \n-
    319 }
    \n-
    \n-
    320
    \n-
    321 template <int dorder>
    \n-
    322 const Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
    \n-
    \n-
    323 tensor(const std::integral_constant<int,dorder> &dorderVar) const
    \n-
    324 {
    \n-
    325 return Base::tensor(dorderVar);
    \n-
    326 }
    \n-
    \n-
    327 const Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
    \n-
    \n-
    328 tensor(const std::integral_constant<int,deriv> &dorderVar) const
    \n-
    329 {
    \n-
    330 return tensor_;
    \n-
    331 }
    \n-
    \n-
    332 template <int dorder>
    \n-
    333 Dune::FieldVector<LFETensor<F,dimD,dorder>,dimR> &
    \n-
    \n-
    334 tensor(const std::integral_constant<int,dorder> &dorderVar)
    \n-
    335 {
    \n-
    336 return Base::tensor(dorderVar);
    \n-
    337 }
    \n-
    \n-
    338 Dune::FieldVector<LFETensor<F,dimD,deriv>,dimR> &
    \n-
    \n-
    339 tensor(const std::integral_constant<int,deriv> &dorderVar)
    \n-
    340 {
    \n-
    341 return tensor_;
    \n-
    342 }
    \n-
    \n-
    343 Dune::FieldVector<ThisLFETensor,dimR> tensor_;
    \n-
    344 };
    \n-
    \n-
    345
    \n-
    346 template <class F,int dimD,int dimR>
    \n-
    \n-
    347 struct Derivatives<F,dimD,dimR,0,DerivativeLayoutNS::value>
    \n-
    348 {
    \n-\n-\n-
    351
    \n-
    352 typedef F Field;
    \n-
    353 typedef F field_type;
    \n-
    354
    \n-\n-
    356 static const unsigned int dimDomain = dimD;
    \n-
    357 static const unsigned int dimRange = dimR;
    \n-
    358 constexpr static int size = ThisLFETensor::size*dimR;
    \n-
    359 typedef Dune::FieldVector<F,size> Block;
    \n-
    360
    \n-
    361 template <class FF>
    \n-
    \n-
    362 This &operator=(const FF& f)
    \n-
    363 {
    \n-
    364 for (int r=0; r<dimR; ++r)
    \n-
    365 tensor_[r] = field_cast<F>(f);
    \n-
    366 return *this;
    \n-
    367 }
    \n-
    \n-
    \n-
    368 This &operator=(const Dune::FieldVector<ThisLFETensor,dimR> &t)
    \n-
    369 {
    \n-
    370 tensor_ = t;
    \n-
    371 return *this;
    \n-
    372 }
    \n-
    \n-
    373
    \n-
    \n-\n-
    375 {
    \n-
    376 block() = t;
    \n-
    377 return *this;
    \n-
    378 }
    \n-
    \n-
    379
    \n-
    \n-
    380 This &operator*= ( const field_type &f )
    \n-
    381 {
    \n-
    382 block() *= f;
    \n-
    383 return *this;
    \n-
    384 }
    \n-
    \n-
    385
    \n-
    \n-
    386 void axpy(const F &a, const This &y)
    \n-
    387 {
    \n-
    388 block().axpy(a,y.block());
    \n-
    389 }
    \n-
    \n-
    390 template <class Fy>
    \n-
    \n-\n-
    392 {
    \n-
    393 field_cast(y.block(),block());
    \n-
    394 }
    \n-
    \n-
    395 template <class Fy>
    \n-
    \n-\n-
    397 {
    \n-
    398 for (int rr=0; rr<dimR; ++rr)
    \n-
    399 tensor_[rr] = y[rr].template tensor<0>()[0];
    \n-
    400 }
    \n-
    \n-
    401 template <class Fy,int dimRy>
    \n-
    \n-\n-
    403 {
    \n-
    404 assign<Fy,dimRy>(y.block(),r);
    \n-
    405 }
    \n-
    \n-
    406 template <class Fy>
    \n-
    \n-\n-
    408 {
    \n-
    409 tensor_[r].assign(y[0]);
    \n-
    410 }
    \n-
    \n-
    411 template <class Fy>
    \n-
    \n-\n-
    413 {
    \n-
    414 tensor_[r].assign(y[0][0]);
    \n-
    415 }
    \n-
    \n-
    416
    \n-
    \n-\n-
    418 {
    \n-
    419 return reinterpret_cast<Block&>(*this);
    \n-
    420 }
    \n-
    \n-
    \n-
    421 const Block &block() const
    \n-
    422 {
    \n-
    423 return reinterpret_cast<const Block&>(*this);
    \n-
    424 }
    \n-
    \n-
    425
    \n-
    \n-\n-
    427 return tensor_[r];
    \n-
    428 }
    \n-
    \n-
    \n-
    429 const ThisLFETensor &operator[](int r) const {
    \n-
    430 return tensor_[r];
    \n-
    431 }
    \n-
    \n-
    432 template <int dorder>
    \n-
    \n-
    433 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &tensor() const
    \n-
    434 {
    \n-
    435 return tensor_;
    \n-
    436 }
    \n-
    \n-
    \n-
    437 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &tensor()
    \n-
    438 {
    \n-
    439 return tensor_;
    \n-
    440 }
    \n-
    \n-
    441 template <unsigned int dorder>
    \n-
    \n-
    442 const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block() const
    \n-
    443 {
    \n-
    444 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    445 const std::integral_constant<int,dorder> a = {};
    \n-
    446 return reinterpret_cast<const Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    447 }
    \n-
    \n-
    448 template <unsigned int dorder>
    \n-
    \n-
    449 Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR> &block()
    \n-
    450 {
    \n-
    451 // use integral_constant<int,...> here to stay compatible with Int2Type
    \n-
    452 const std::integral_constant<int,dorder> a = {};
    \n-
    453 return reinterpret_cast<Dune::FieldVector<F,LFETensor<F,dimD,dorder>::size*dimR>&>(tensor(a));
    \n-
    454 }
    \n-
    \n-
    455
    \n-
    456 protected:
    \n-
    457 const Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
    \n-
    \n-
    458 tensor(const std::integral_constant<int,0> &dorderVar) const
    \n-
    459 {
    \n-
    460 return tensor_;
    \n-
    461 }
    \n-
    \n-
    462 Dune::FieldVector<LFETensor<F,dimD,0>,dimR> &
    \n-
    \n-
    463 tensor(const std::integral_constant<int,0> &dorderVar)
    \n-
    464 {
    \n-
    465 return tensor_;
    \n-
    466 }
    \n-
    \n-
    467 template <class Fy,unsigned int dy>
    \n-
    \n-\n-
    469 {
    \n-
    470 for (int rr=0; rr<dimR; ++rr)
    \n-
    471 tensor_[rr] = y[rr].template tensor<0>()[0];
    \n-
    472 }
    \n-
    \n-
    473 template <class Fy,int dimRy>
    \n-
    \n-
    474 void assign(const FieldVector<Fy,size*dimRy> &y,unsigned int r)
    \n-
    475 {
    \n-
    476 tensor_[0] = reinterpret_cast<const FieldVector<Fy,ThisLFETensor::size>&>(y[r*ThisLFETensor::size]);
    \n-
    477 }
    \n-
    \n-
    478 template <class Fy>
    \n-
    \n-
    479 void assign(unsigned int r,const FieldVector<Fy,size/dimR> &y)
    \n-
    480 {
    \n-
    481 tensor_[r] = y;
    \n-
    482 }
    \n-
    \n-
    483 Dune::FieldVector<ThisLFETensor,dimR> tensor_;
    \n-
    484 };
    \n-
    \n-
    485
    \n-
    486 // Implemnetation for DerivativeLayoutNS::derivative based layout
    \n-
    487 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-
    488 struct Derivatives<F,dimD,dimR,deriv,DerivativeLayoutNS::derivative>
    \n-
    489 {
    \n-\n-\n-
    492
    \n-
    493 typedef F Field;
    \n-
    494 typedef F field_type;
    \n-
    495
    \n-\n-
    497 static const unsigned int dimDomain = dimD;
    \n-
    498 static const unsigned int dimRange = dimR;
    \n-
    499 constexpr static int size = ScalarDeriv::size*dimR;
    \n-
    500 typedef Dune::FieldVector<F,size> Block;
    \n-
    501
    \n-
    502 template <class FF>
    \n-
    \n-
    503 This &operator=(const FF& f)
    \n-
    504 {
    \n-
    505 block() = field_cast<F>(f);
    \n-
    506 return *this;
    \n-
    507 }
    \n-
    \n-
    \n-\n-
    509 {
    \n-
    510 block() = t;
    \n-
    511 return *this;
    \n-
    512 }
    \n-
    \n-
    513
    \n-
    \n-
    514 This &operator*= ( const field_type &f )
    \n-
    515 {
    \n-
    516 block() *= f;
    \n-
    517 return *this;
    \n-
    518 }
    \n-
    \n-
    519
    \n-
    520 template <class FF>
    \n-
    \n-
    521 void axpy(const FF &a, const This &y)
    \n-
    522 {
    \n-
    523 block().axpy(field_cast<F>(a),y.block());
    \n-
    524 }
    \n-
    \n-
    525 // assign with same layout (only different Field)
    \n-
    526 template <class Fy>
    \n-
    \n-\n-
    528 {
    \n-
    529 field_cast(y.block(),block());
    \n-
    530 }
    \n-
    \n-
    531 // assign with different layout (same dimRange)
    \n-
    532 template <class Fy>
    \n-
    \n-\n-
    534 {
    \n-
    535 for (unsigned int rr=0; rr<dimR; ++rr)
    \n-
    536 deriv_[rr].assign(y,rr);
    \n-
    537 }
    \n-
    \n-
    538 // assign with scalar functions to component r
    \n-
    539 template <class Fy,DerivativeLayoutNS::DerivativeLayout layouty>
    \n-
    \n-
    540 void assign(unsigned int r,const Derivatives<Fy,dimD,1,deriv,layouty> &y)
    \n-
    541 {
    \n-
    542 deriv_[r].assign(r,y);
    \n-
    543 }
    \n-
    \n-
    544
    \n-
    \n-\n-
    546 {
    \n-
    547 return reinterpret_cast<Block&>(*this);
    \n-
    548 }
    \n-
    \n-
    \n-
    549 const Block &block() const
    \n-
    550 {
    \n-
    551 return reinterpret_cast<const Block&>(*this);
    \n-
    552 }
    \n-
    \n-
    553
    \n-
    \n-\n-
    555 return deriv_[r];
    \n-
    556 }
    \n-
    \n-
    \n-
    557 const ScalarDeriv &operator[](int r) const {
    \n-
    558 return deriv_[r];
    \n-
    559 }
    \n-
    \n-
    560 protected:
    \n-
    561 Dune::FieldVector<ScalarDeriv,dimR> deriv_;
    \n-
    562 };
    \n-
    \n-
    563
    \n-
    564 // ******************************************
    \n-
    565 // AXPY *************************************
    \n-
    566 // ******************************************
    \n-
    567 template <class Vec1,class Vec2,unsigned int deriv>
    \n-
    \n-\n-
    569 {
    \n-
    570 template <class Field>
    \n-
    \n-
    571 static void apply(unsigned int r,const Field &a,
    \n-
    572 const Vec1 &x, Vec2 &y)
    \n-
    573 {
    \n-
    574 y.axpy(a,x);
    \n-
    575 }
    \n-
    \n-
    576 };
    \n-
    \n-
    577 template <class F1,int dimD,int dimR,
    \n-
    578 unsigned int d,
    \n-
    579 class Vec2,
    \n-
    580 unsigned int deriv>
    \n-
    \n-
    581 struct LFETensorAxpy<Derivatives<F1,dimD,dimR,d,DerivativeLayoutNS::value>,Vec2,deriv>
    \n-
    582 {
    \n-\n-
    584 template <class Field>
    \n-
    \n-
    585 static void apply(unsigned int r,const Field &a,
    \n-
    586 const Vec1 &x, Vec2 &y)
    \n-
    587 {
    \n-
    588 const FieldVector<F1,Vec2::size> &xx = x.template block<deriv>();
    \n-
    589 for (int i=0; i<y.size; ++i)
    \n-
    590 y[i] += xx[i]*a;
    \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::derivative>,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 for (int rr=0; rr<dimR; ++rr)
    \n-\n-
    606 Vec2,deriv>::apply(rr,a,x[rr],y);
    \n-
    607 }
    \n-
    \n-
    608 };
    \n-
    \n-
    609 template <class F1,int dimD,
    \n-
    610 unsigned int d,
    \n-
    611 class Vec2,
    \n-
    612 unsigned int deriv>
    \n-
    \n-
    613 struct LFETensorAxpy<Derivatives<F1,dimD,1,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-\n-
    621 Vec2,deriv>::apply(r,a,x[0],y);
    \n-
    622 }
    \n-
    \n-
    623 };
    \n-
    \n-
    624 template <class F1,int dimD,
    \n-
    625 unsigned int d,
    \n-
    626 class Vec2,
    \n-
    627 unsigned int deriv>
    \n-
    \n-
    628 struct LFETensorAxpy<Derivatives<F1,dimD,1,d,DerivativeLayoutNS::value>,Vec2,deriv>
    \n-
    629 {
    \n-\n-
    631 template <class Field>
    \n-
    \n-
    632 static void apply(unsigned int r,const Field &a,
    \n-
    633 const Vec1 &x, Vec2 &y)
    \n-
    634 {
    \n-
    635 typedef LFETensor<F1,dimD,deriv> LFETensorType;
    \n-
    636 const unsigned int rr = r*LFETensorType::size;
    \n-
    637 const FieldVector<F1,LFETensorType::size> &xx = x.template block<deriv>();
    \n-
    638 for (int i=0; i<FieldVector<F1,LFETensorType::size>::dimension; ++i)
    \n-
    639 y[rr+i] += xx[i]*a;
    \n-
    640 }
    \n-
    \n-
    641 };
    \n-
    \n-
    642
    \n-
    643 // ***********************************************
    \n-
    644 // Assign ****************************************
    \n-
    645 // ***********************************************
    \n-
    646 template <class Vec1,class Vec2>
    \n-
    \n-\n-
    648 {
    \n-
    \n-
    649 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    650 {
    \n-
    651 field_cast(vec1,vec2);
    \n-
    652 }
    \n-
    \n-
    653 };
    \n-
    \n-
    654 template <int dimD,int dimR,unsigned int deriv, DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    655 class F1,class F2>
    \n-
    \n-
    656 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,layout>,
    \n-
    657 Derivatives<F2,dimD,dimR,deriv,layout> >
    \n-
    658 {
    \n-\n-\n-
    \n-
    661 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    662 {
    \n-
    663 field_cast(vec1.block(),vec2.block());
    \n-
    664 }
    \n-
    \n-
    665 };
    \n-
    \n-
    666 template <int dimD,int dimR,unsigned int deriv,
    \n-
    667 class F1, class F2>
    \n-
    \n-
    668 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::value>,
    \n-
    669 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
    \n-
    670 {
    \n-\n-\n-
    \n-
    673 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    674 {
    \n-
    675 vec2.assign(vec1);
    \n-
    676 }
    \n-
    \n-
    677 };
    \n-
    \n-
    678 template <int dimD,int dimR,unsigned int deriv,
    \n-
    679 class F1, class F2>
    \n-
    \n-
    680 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::derivative>,
    \n-
    681 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
    \n-
    682 {
    \n-\n-\n-
    \n-
    685 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    686 {
    \n-
    687 vec2.assign(vec1);
    \n-
    688 }
    \n-
    \n-
    689 };
    \n-
    \n-
    690 template <int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    691 class F1, class F2>
    \n-
    \n-
    692 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n-
    693 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::value> >
    \n-
    694 {
    \n-\n-\n-
    \n-
    697 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    698 {
    \n-
    699 vec2.assign(r,vec1);
    \n-
    700 }
    \n-
    \n-
    701 };
    \n-
    \n-
    702 template <int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    703 class F1, class F2>
    \n-
    \n-
    704 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n-
    705 Derivatives<F2,dimD,dimR,deriv,DerivativeLayoutNS::derivative> >
    \n-
    706 {
    \n-\n-\n-
    \n-
    709 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    710 {
    \n-
    711 vec2.assign(r,vec1);
    \n-
    712 }
    \n-
    \n-
    713 };
    \n-
    \n-
    714 template <int dimD,unsigned int deriv,
    \n-
    715 class F1, class F2>
    \n-
    \n-
    716 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,
    \n-
    717 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
    \n-
    718 {
    \n-\n-\n-
    \n-
    721 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    722 {
    \n-
    723 field_cast(vec1.block(),vec2.block());
    \n-
    724 }
    \n-
    \n-
    725 };
    \n-
    \n-
    726 template <int dimD,unsigned int deriv,
    \n-
    727 class F1, class F2>
    \n-
    \n-
    728 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,
    \n-
    729 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
    \n-
    730 {
    \n-\n-\n-
    \n-
    733 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    734 {
    \n-
    735 field_cast(vec1.block(),vec2.block());
    \n-
    736 }
    \n-
    \n-
    737 };
    \n-
    \n-
    738 template <int dimD,unsigned int deriv,
    \n-
    739 class F1, class F2>
    \n-
    \n-
    740 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,
    \n-
    741 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::value> >
    \n-
    742 {
    \n-\n-\n-
    \n-
    745 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    746 {
    \n-
    747 field_cast(vec1.block(),vec2.block());
    \n-
    748 }
    \n-
    \n-
    749 };
    \n-
    \n-
    750 template <int dimD,unsigned int deriv,
    \n-
    751 class F1, class F2>
    \n-
    \n-
    752 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,
    \n-
    753 Derivatives<F2,dimD,1,deriv,DerivativeLayoutNS::derivative> >
    \n-
    754 {
    \n-\n-\n-
    \n-
    757 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    758 {
    \n-
    759 field_cast(vec1.block(),vec2.block());
    \n-
    760 }
    \n-
    \n-
    761 };
    \n-
    \n-
    762 template <int dimD,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout,
    \n-
    763 class F1, class F2>
    \n-
    \n-
    764 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,layout>,
    \n-
    765 F2 >
    \n-
    766 {
    \n-\n-
    768 typedef F2 Vec2;
    \n-
    \n-
    769 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    770 {
    \n-
    771 field_cast(vec1.block(),vec2);
    \n-
    772 }
    \n-
    \n-
    773 };
    \n-
    \n-
    774 template <int dimD,int dimR,
    \n-
    775 class F1,unsigned int deriv,
    \n-
    776 class F2>
    \n-
    \n-
    777 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::value>,FieldVector<F2,dimR> >
    \n-
    778 {
    \n-\n-
    780 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    781 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    782 {
    \n-
    783 field_cast(vec1.template block<0>(),vec2);
    \n-
    784 }
    \n-
    \n-
    785 };
    \n-
    \n-
    786 template <int dimD,int dimR,
    \n-
    787 class F1,unsigned int deriv,
    \n-
    788 class F2>
    \n-
    \n-
    789 struct DerivativeAssign<Derivatives<F1,dimD,dimR,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,dimR> >
    \n-
    790 {
    \n-\n-
    792 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    793 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    794 {
    \n-
    795 for (int rr=0; rr<dimR; ++rr)
    \n-
    796 field_cast(vec1[rr].template tensor<0>()[0].block(),vec2[rr]);
    \n-
    797 }
    \n-
    \n-
    798 };
    \n-
    \n-
    799 template <int dimD,
    \n-
    800 class F1,unsigned int deriv,
    \n-
    801 class F2,int dimR>
    \n-
    \n-
    802 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,FieldVector<F2,dimR> >
    \n-
    803 {
    \n-\n-
    805 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    806 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    807 {
    \n-
    808 field_cast(vec1.template tensor<0>()[0].block(),vec2[r]);
    \n-
    809 }
    \n-
    \n-
    810 };
    \n-
    \n-
    811 template <int dimD,
    \n-
    812 class F1,unsigned int deriv,
    \n-
    813 class F2,int dimR>
    \n-
    \n-
    814 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,dimR> >
    \n-
    815 {
    \n-\n-
    817 typedef FieldVector<F2,dimR> Vec2;
    \n-
    \n-
    818 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    819 {
    \n-
    820 field_cast(vec1[0].template tensor<0>()[0].block(),vec2[r]);
    \n-
    821 }
    \n-
    \n-
    822 };
    \n-
    \n-
    823 template <int dimD,
    \n-
    824 class F1,unsigned int deriv,
    \n-
    825 class F2>
    \n-
    \n-
    826 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::value>,FieldVector<F2,1> >
    \n-
    827 {
    \n-\n-
    829 typedef FieldVector<F2,1> Vec2;
    \n-
    \n-
    830 static void apply(unsigned int r,const Vec1 &vec1,Vec2 &vec2)
    \n-
    831 {
    \n-
    832 field_cast(vec1.template tensor<0>()[0].block(),vec2);
    \n-
    833 }
    \n-
    \n-
    834 };
    \n-
    \n-
    835 template <int dimD,
    \n-
    836 class F1,unsigned int deriv,
    \n-
    837 class F2>
    \n-
    \n-
    838 struct DerivativeAssign<Derivatives<F1,dimD,1,deriv,DerivativeLayoutNS::derivative>,FieldVector<F2,1> >
    \n-
    839 {
    \n-\n-
    841 typedef FieldVector<F2,1> Vec2;
    \n-
    \n-
    842 static void apply(unsigned int /*r*/,const Vec1 &vec1,Vec2 &vec2)
    \n-
    843 {
    \n-
    844 field_cast(vec1[0].template tensor<0>()[0].block(),vec2);
    \n-
    845 }
    \n-
    \n-
    846 };
    \n-
    \n-
    847
    \n-
    848 // ***********************************************
    \n-
    849 // IO ********************************************
    \n-
    850 // ***********************************************
    \n-
    851 template <class F,int dimD,unsigned int deriv>
    \n-
    \n-
    852 std::ostream &operator<< ( std::ostream &out, const LFETensor< F,dimD,deriv > &tensor )
    \n-
    853 {
    \n-
    854 return out << tensor.block();
    \n-
    855 }
    \n-
    \n-
    856#if 0
    \n-
    857 template <class F,int dimD,unsigned int deriv>
    \n-
    858 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,deriv > &d )
    \n-
    859 {
    \n-
    860 out << static_cast<const ScalarDerivatives< F,dimD,deriv-1 > &>(d);
    \n-
    861 out << " , " << d.tensor() << std::endl;
    \n-
    862 return out;
    \n-
    863 }
    \n-
    864 template <class F,int dimD>
    \n-
    865 std::ostream &operator<< ( std::ostream &out, const ScalarDerivatives< F,dimD,0 > &d )
    \n-
    866 {
    \n-
    867 out << d.tensor() << std::endl;
    \n-
    868 return out;
    \n-
    869 }
    \n-
    870#endif
    \n-
    871 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-\n-
    873 {
    \n-
    874 out << " ( ";
    \n-
    875 out << d[0];
    \n-
    876 for (int r=1; r<dimR; ++r)
    \n-
    877 {
    \n-
    878 out << " , " << d[r];
    \n-
    879 }
    \n-
    880 out << " ) " << std::endl;
    \n-
    881 return out;
    \n-
    882 }
    \n-
    \n-
    883 template <class F,int dimD,int dimR,unsigned int deriv>
    \n-
    \n-\n-
    885 {
    \n-
    886 out << static_cast<const Derivatives< F,dimD,dimR,deriv-1,DerivativeLayoutNS::value > &>(d);
    \n-
    887 out << " ( ";
    \n-
    888 out << d[0];
    \n-
    889 for (int r=1; r<dimR; ++r)
    \n-
    890 {
    \n-
    891 out << " , " << d[r];
    \n-
    892 }
    \n-
    893 out << " ) " << std::endl;
    \n-
    894 return out;
    \n-
    895 }
    \n-
    \n-
    896 template <class F,int dimD,int dimR>
    \n-
    \n-\n-
    898 {
    \n-
    899 out << " ( ";
    \n-
    900 out << d[0];
    \n-
    901 for (int r=1; r<dimR; ++r)
    \n-
    902 {
    \n-
    903 out << " , " << d[r];
    \n-
    904 }
    \n-
    905 out << " ) " << std::endl;
    \n-
    906 return out;
    \n-
    907 }
    \n-
    \n-
    908 template <class F,int dimD,int dimR>
    \n-
    \n-
    909 std::ostream &operator<< ( std::ostream &out, const Derivatives< F,dimD,dimR,0,DerivativeLayoutNS::value > &d )
    \n-
    910 {
    \n-
    911 out << " ( ";
    \n-
    912 out << d[0];
    \n-
    913 for (int r=1; r<dimR; ++r)
    \n-
    914 {
    \n-
    915 out << " , " << d[r];
    \n-
    916 }
    \n-
    917 out << " ) " << std::endl;
    \n-
    918 return out;
    \n-
    919 }
    \n-
    \n-
    920 template <class F,int dimD,int dimR,unsigned int deriv,DerivativeLayoutNS::DerivativeLayout layout>
    \n-
    \n-
    921 std::ostream &operator<< ( std::ostream &out, const std::vector<Derivatives< F,dimD,dimR,deriv,layout > > &y )
    \n-
    922 {
    \n-
    923 out << "Number of basis functions: " << y.size() << std::endl;
    \n-
    924 for (unsigned int i=0; i<y.size(); ++i)
    \n-
    925 {
    \n-
    926 out << "Base " << i << " : " << std::endl;
    \n-
    927 out << y[i];
    \n-
    928 out << std::endl;
    \n-
    929 }
    \n-
    930 return out;
    \n-
    931 }
    \n-
    \n-
    932}
    \n-
    933#endif // DUNE_TENSOR_HH
    \n-\n+
    12namespace Dune
    \n+
    13{
    \n+
    14
    \n+
    19 template<class D, class R>
    \n+\n+
    21 [[deprecated("use LagrangePyramidLocalFiniteElement instead")]]
    \n+\n+
    23
    \n+
    24}
    \n+
    25
    \n+
    26#endif
    \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:152
    \n-
    DerivativeLayout
    Definition tensor.hh:168
    \n-
    @ derivative
    Definition tensor.hh:168
    \n-
    @ value
    Definition tensor.hh:168
    \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-
    Definition tensor.hh:107
    \n-
    Block & block()
    Definition tensor.hh:154
    \n-
    F field_type
    Definition tensor.hh:111
    \n-
    Block block_
    Definition tensor.hh:162
    \n-
    void assign(const LFETensor< Fy, dimD, 0 > &y)
    Definition tensor.hh:149
    \n-
    const Block & block() const
    Definition tensor.hh:158
    \n-
    void axpy(const F &a, const This &y)
    Definition tensor.hh:144
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:113
    \n-
    Definition tensor.hh:172
    \n-\n-\n-
    Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value > This
    Definition tensor.hh:179
    \n-
    This & operator=(const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > &t)
    Definition tensor.hh:203
    \n-\n-
    Derivatives< F, dimD, dimR, deriv-1, DerivativeLayoutNS::value > Base
    Definition tensor.hh:180
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar) const
    Definition tensor.hh:323
    \n-
    void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
    Definition tensor.hh:301
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:227
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:314
    \n-\n-
    const ThisLFETensor & operator[](int r) const
    Definition tensor.hh:296
    \n-
    Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
    Definition tensor.hh:287
    \n-
    LFETensor< F, dimD, deriv > ThisLFETensor
    Definition tensor.hh:181
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:247
    \n-
    const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
    Definition tensor.hh:280
    \n-
    Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor(const std::integral_constant< int, dorder > &dorderVar)
    Definition tensor.hh:334
    \n-
    const Block & block() const
    Definition tensor.hh:261
    \n-
    void axpy(const F &a, const This &y)
    Definition tensor.hh:220
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:233
    \n-
    This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
    Definition tensor.hh:197
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:252
    \n-
    This & operator=(const Block &t)
    Definition tensor.hh:208
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:190
    \n-
    Dune::FieldVector< ThisLFETensor, dimR > tensor_
    Definition tensor.hh:343
    \n-
    Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar)
    Definition tensor.hh:339
    \n-
    Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor()
    Definition tensor.hh:274
    \n-
    void assign(const Derivatives< Fy, dimD, dimRy, deriv, DerivativeLayoutNS::value > &y, unsigned int r)
    Definition tensor.hh:241
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, dorder >, dimR > & tensor() const
    Definition tensor.hh:267
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, deriv >, dimR > & tensor(const std::integral_constant< int, deriv > &dorderVar) const
    Definition tensor.hh:328
    \n-
    ThisLFETensor & operator[](int r)
    Definition tensor.hh:293
    \n-\n-
    void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
    Definition tensor.hh:307
    \n-\n-
    ThisLFETensor & operator[](int r)
    Definition tensor.hh:426
    \n-
    LFETensor< F, dimD, 0 > ThisLFETensor
    Definition tensor.hh:350
    \n-
    Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block()
    Definition tensor.hh:449
    \n-
    Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar)
    Definition tensor.hh:463
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:391
    \n-\n-
    Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value > This
    Definition tensor.hh:349
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, dy, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:468
    \n-
    void assign(const Derivatives< Fy, dimD, dimRy, 0, DerivativeLayoutNS::value > &y, unsigned int r)
    Definition tensor.hh:402
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor() const
    Definition tensor.hh:433
    \n-
    Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor()
    Definition tensor.hh:437
    \n-
    This & operator=(const Block &t)
    Definition tensor.hh:374
    \n-\n-
    const ThisLFETensor & operator[](int r) const
    Definition tensor.hh:429
    \n-
    const Dune::FieldVector< LFETensor< F, dimD, 0 >, dimR > & tensor(const std::integral_constant< int, 0 > &dorderVar) const
    Definition tensor.hh:458
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:359
    \n-
    const Block & block() const
    Definition tensor.hh:421
    \n-
    const Dune::FieldVector< F, LFETensor< F, dimD, dorder >::size *dimR > & block() const
    Definition tensor.hh:442
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:412
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:396
    \n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, 0, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:407
    \n-
    This & operator=(const Dune::FieldVector< ThisLFETensor, dimR > &t)
    Definition tensor.hh:368
    \n-
    void assign(const FieldVector< Fy, size *dimRy > &y, unsigned int r)
    Definition tensor.hh:474
    \n-
    Dune::FieldVector< ThisLFETensor, dimR > tensor_
    Definition tensor.hh:483
    \n-
    void assign(unsigned int r, const FieldVector< Fy, size/dimR > &y)
    Definition tensor.hh:479
    \n-
    This & operator=(const FF &f)
    Definition tensor.hh:362
    \n-\n-
    void axpy(const F &a, const This &y)
    Definition tensor.hh:386
    \n-\n-\n-\n-\n-\n-\n-
    void assign(unsigned int r, const Derivatives< Fy, dimD, 1, deriv, layouty > &y)
    Definition tensor.hh:540
    \n-\n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::value > &y)
    Definition tensor.hh:533
    \n-
    Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative > This
    Definition tensor.hh:490
    \n-
    Derivatives< F, dimD, 1, deriv, DerivativeLayoutNS::value > ScalarDeriv
    Definition tensor.hh:491
    \n-
    const ScalarDeriv & operator[](int r) const
    Definition tensor.hh:557
    \n-
    void axpy(const FF &a, const This &y)
    Definition tensor.hh:521
    \n-
    This & operator=(const Block &t)
    Definition tensor.hh:508
    \n-
    Dune::FieldVector< F, size > Block
    Definition tensor.hh:500
    \n-
    Dune::FieldVector< ScalarDeriv, dimR > deriv_
    Definition tensor.hh:561
    \n-
    void assign(const Derivatives< Fy, dimD, dimR, deriv, DerivativeLayoutNS::derivative > &y)
    Definition tensor.hh:527
    \n-
    Definition tensor.hh:569
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:571
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:585
    \n-
    Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:583
    \n-
    Derivatives< F1, dimD, dimR, d, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:599
    \n-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:601
    \n-
    Derivatives< F1, dimD, 1, 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-
    static void apply(unsigned int r, const Field &a, const Vec1 &x, Vec2 &y)
    Definition tensor.hh:632
    \n-
    Derivatives< F1, dimD, 1, d, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:630
    \n-
    Definition tensor.hh:648
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:649
    \n-\n-\n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:661
    \n-\n-\n-\n-\n-\n-\n-\n-\n-
    Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec2
    Definition tensor.hh:696
    \n-\n-\n-
    Derivatives< F2, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec2
    Definition tensor.hh:708
    \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:769
    \n-
    Derivatives< F1, dimD, 1, deriv, layout > Vec1
    Definition tensor.hh:767
    \n-
    Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:779
    \n-\n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:781
    \n-
    Derivatives< F1, dimD, dimR, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:791
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:793
    \n-\n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:804
    \n-\n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:806
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:818
    \n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:816
    \n-\n-\n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::value > Vec1
    Definition tensor.hh:828
    \n-
    static void apply(unsigned int r, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:830
    \n-
    Derivatives< F1, dimD, 1, deriv, DerivativeLayoutNS::derivative > Vec1
    Definition tensor.hh:840
    \n-
    static void apply(unsigned int, const Vec1 &vec1, Vec2 &vec2)
    Definition tensor.hh:842
    \n-\n+
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:812
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,1607 +1,40 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+pyramidp2.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 (C) 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_PYRAMIDP2_3DLOCALFINITEELEMENT_HH\n+6#define DUNE_PYRAMIDP2_3DLOCALFINITEELEMENT_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/_\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+9\n+10#warning This header is deprecated\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 rewritting...\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_\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 _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-95 {\n-_\b9_\b6 static const int _\bs_\bi_\bz_\be = 0;\n-97 };\n-98\n-99 template \n-_\b1_\b0_\b0 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-101 {\n-_\b1_\b0_\b2 static const int _\bs_\bi_\bz_\be = 1;\n-103 };\n-104\n-105 template \n-_\b1_\b0_\b6 class _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br\n-107 {\n-108 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-109\n-110 public:\n-_\b1_\b1_\b1 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-_\b1_\b1_\b2 static const int _\bs_\bi_\bz_\be = 1;\n-_\b1_\b1_\b3 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-114\n-115 template< class FF >\n-_\b1_\b1_\b6 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const FF &f )\n-117 {\n-118 _\bb_\bl_\bo_\bc_\bk() = field_cast< F >( f );\n-119 return *this;\n-120 }\n-121\n-_\b1_\b2_\b2 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bB_\bl_\bo_\bc_\bk &b )\n-123 {\n-124 _\bb_\bl_\bo_\bc_\bk() = b;\n-125 return *this;\n-126 }\n-127\n-_\b1_\b2_\b8 _\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-129 {\n-130 _\bb_\bl_\bo_\bc_\bk() *= f;\n-131 return *this;\n-132 }\n-133\n-_\b1_\b3_\b4 const F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i ) const\n-135 {\n-136 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n-137 }\n-138\n-_\b1_\b3_\b9 F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b ( const unsigned int i )\n-140 {\n-141 return _\bb_\bl_\bo_\bc_\bk()[ i ];\n-142 }\n-143\n-_\b1_\b4_\b4 void _\ba_\bx_\bp_\by(const F& a, const _\bT_\bh_\bi_\bs &y)\n-145 {\n-146 _\bb_\bl_\bo_\bc_\bk().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n-147 }\n-148 template \n-_\b1_\b4_\b9 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-150 {\n-151 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y._\bb_\bl_\bo_\bc_\bk(),_\bb_\bl_\bo_\bc_\bk());\n-152 }\n-153\n-_\b1_\b5_\b4 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-155 {\n-156 return _\bb_\bl_\bo_\bc_\bk_\b_;\n-157 }\n-_\b1_\b5_\b8 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-159 {\n-160 return _\bb_\bl_\bo_\bc_\bk_\b_;\n-161 }\n-_\b1_\b6_\b2 _\bB_\bl_\bo_\bc_\bk _\bb_\bl_\bo_\bc_\bk_\b_;\n-163 };\n-164 // ***********************************************************\n-165 // Structure for all derivatives up to order deriv\n-166 // for vector valued function\n-_\b1_\b6_\b7 namespace DerivativeLayoutNS {\n-_\b1_\b6_\b8 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-169 }\n-170 template \n-_\b1_\b7_\b2 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs;\n-173\n-174 // Implemnetation for valued based layout\n-175 template \n-_\b1_\b7_\b6 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-177 : public _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-178 {\n-_\b1_\b7_\b9 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_\b8_\b0 typedef _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs _\bB_\ba_\bs_\be;\n-_\b1_\b8_\b1 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-182\n-_\b1_\b8_\b3 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b1_\b8_\b4 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-185\n-_\b1_\b8_\b6 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-_\b1_\b8_\b7 static const unsigned int dimDomain = dimD;\n-_\b1_\b8_\b8 static const unsigned int dimRange = dimR;\n-_\b1_\b8_\b9 constexpr static int size = Base::size+ThisLFETensor::size*dimR;\n-_\b1_\b9_\b0 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-191\n-_\b1_\b9_\b2 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const F& f)\n-193 {\n-194 block() = f;\n-195 return *this;\n-196 }\n-_\b1_\b9_\b7 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector &t)\n-198 {\n-199 tensor_ = t;\n-200 return *this;\n-201 }\n-202 template \n-_\b2_\b0_\b3 _\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-204 {\n-205 tensor() = t;\n-206 return *this;\n-207 }\n-_\b2_\b0_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n-209 {\n-210 block() = t;\n-211 return *this;\n-212 }\n-213\n-_\b2_\b1_\b4 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-215 {\n-216 block() *= f;\n-217 return *this;\n-218 }\n-219\n-_\b2_\b2_\b0 void _\ba_\bx_\bp_\by(const F &a, const _\bT_\bh_\bi_\bs &y)\n-221 {\n-222 block().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n-223 }\n-224\n-225 // assign with same layout (only different Field)\n-226 template \n-_\b2_\b2_\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,_\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-228 {\n-229 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n-230 }\n-231 // assign with different layout (same dimRange)\n-232 template \n-_\b2_\b3_\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-234 {\n-235 Base::assign(y);\n-236 for (int rr=0; rr()[0];\n-238 }\n-239 // assign with rth component of function\n-240 template \n-_\b2_\b4_\b1 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-242 {\n-243 assign(y.block(),r);\n-244 }\n-245 // assign with scalar functions to component r\n-246 template \n-_\b2_\b4_\b7 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-248 {\n-249 assign(r,y.block());\n-250 }\n-251 template \n-_\b2_\b5_\b2 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-253 {\n-254 assign(r,y[0]);\n-255 }\n-256\n-_\b2_\b5_\b7 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-258 {\n-259 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n-260 }\n-_\b2_\b6_\b1 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-262 {\n-263 return reinterpret_cast(*this);\n-264 }\n-265\n-266 template \n-_\b2_\b6_\b7 const Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br() const\n-268 {\n-269 // use integral_constant here to stay compatible with Int2Type\n-270 const std::integral_constant a = {};\n-271 return tensor(a);\n-272 }\n-273 template \n-_\b2_\b7_\b4 Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br()\n-275 {\n-276 // use integral_constant here to stay compatible with Int2Type\n-277 return tensor(std::integral_constant());\n-278 }\n-279 template \n-_\b2_\b8_\b0 const Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-const\n-281 {\n-282 // use integral_constant here to stay compatible with Int2Type\n-283 const std::integral_constant a = {};\n-284 return reinterpret_cast::size*dimR>&>(tensor(a));\n-285 }\n-286 template \n-_\b2_\b8_\b7 Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-288 {\n-289 // use integral_constant here to stay compatible with Int2Type\n-290 const std::integral_constant a = {};\n-291 return reinterpret_cast::\n-size*dimR>&>(tensor(a));\n-292 }\n-_\b2_\b9_\b3 _\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-294 return tensor_[r];\n-295 }\n-_\b2_\b9_\b6 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-297 return tensor_[r];\n-298 }\n-299 protected:\n-300 template \n-_\b3_\b0_\b1 void _\ba_\bs_\bs_\bi_\bg_\bn(const FieldVector &y,unsigned int r)\n-302 {\n-303 Base::template assign(reinterpret_cast&>(y),r);\n-304 tensor_[0] = reinterpret_cast&>(y\n-[Base::size*dimRy+r*ThisLFETensor::size]);\n-305 }\n-306 template \n-_\b3_\b0_\b7 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const FieldVector &y)\n-308 {\n-309 Base::assign(r,reinterpret_cast&>\n-(y));\n-310 tensor_[r] = reinterpret_cast&>(y\n-[Base::size/dimR]);\n-311 }\n-312 // assign with different layout (same dimRange)\n-313 template \n-_\b3_\b1_\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-315 {\n-316 Base::assign(y);\n-317 for (int rr=0; rr()[0];\n-319 }\n-320\n-321 template \n-322 const Dune::FieldVector,dimR> &\n-_\b3_\b2_\b3 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n-324 {\n-325 return Base::tensor(dorderVar);\n-326 }\n-327 const Dune::FieldVector,dimR> &\n-_\b3_\b2_\b8 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n-329 {\n-330 return tensor_;\n-331 }\n-332 template \n-333 Dune::FieldVector,dimR> &\n-_\b3_\b3_\b4 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n-335 {\n-336 return Base::tensor(dorderVar);\n-337 }\n-338 Dune::FieldVector,dimR> &\n-_\b3_\b3_\b9 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n-340 {\n-341 return tensor_;\n-342 }\n-_\b3_\b4_\b3 Dune::FieldVector _\bt_\be_\bn_\bs_\bo_\br_\b_;\n-344 };\n-345\n-346 template \n-_\b3_\b4_\b7 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-348 {\n-_\b3_\b4_\b9 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_\b5_\b0 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-351\n-_\b3_\b5_\b2 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b3_\b5_\b3 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-354\n-_\b3_\b5_\b5 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_\b5_\b6 static const unsigned int dimDomain = dimD;\n-_\b3_\b5_\b7 static const unsigned int dimRange = dimR;\n-_\b3_\b5_\b8 constexpr static int size = ThisLFETensor::size*dimR;\n-_\b3_\b5_\b9 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-360\n-361 template \n-_\b3_\b6_\b2 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const FF& f)\n-363 {\n-364 for (int r=0; r(f);\n-366 return *this;\n-367 }\n-_\b3_\b6_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const Dune::FieldVector &t)\n-369 {\n-370 tensor_ = t;\n-371 return *this;\n-372 }\n-373\n-_\b3_\b7_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n-375 {\n-376 block() = t;\n-377 return *this;\n-378 }\n-379\n-_\b3_\b8_\b0 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-381 {\n-382 block() *= f;\n-383 return *this;\n-384 }\n-385\n-_\b3_\b8_\b6 void _\ba_\bx_\bp_\by(const F &a, const _\bT_\bh_\bi_\bs &y)\n-387 {\n-388 block().axpy(a,y._\bb_\bl_\bo_\bc_\bk());\n-389 }\n-390 template \n-_\b3_\b9_\b1 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-392 {\n-393 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n-394 }\n-395 template \n-_\b3_\b9_\b6 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-397 {\n-398 for (int rr=0; rr()[0];\n-400 }\n-401 template \n-_\b4_\b0_\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_\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-403 {\n-404 assign(y.block(),r);\n-405 }\n-406 template \n-_\b4_\b0_\b7 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-408 {\n-409 tensor_[r].assign(y[0]);\n-410 }\n-411 template \n-_\b4_\b1_\b2 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-413 {\n-414 tensor_[r].assign(y[0][0]);\n-415 }\n-416\n-_\b4_\b1_\b7 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-418 {\n-419 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n-420 }\n-_\b4_\b2_\b1 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-422 {\n-423 return reinterpret_cast(*this);\n-424 }\n-425\n-_\b4_\b2_\b6 _\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-427 return tensor_[r];\n-428 }\n-_\b4_\b2_\b9 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-430 return tensor_[r];\n-431 }\n-432 template \n-_\b4_\b3_\b3 const Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br() const\n-434 {\n-435 return tensor_;\n-436 }\n-_\b4_\b3_\b7 Dune::FieldVector,dimR> &_\bt_\be_\bn_\bs_\bo_\br()\n-438 {\n-439 return tensor_;\n-440 }\n-441 template \n-_\b4_\b4_\b2 const Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-const\n-443 {\n-444 // use integral_constant here to stay compatible with Int2Type\n-445 const std::integral_constant a = {};\n-446 return reinterpret_cast::size*dimR>&>(tensor(a));\n-447 }\n-448 template \n-_\b4_\b4_\b9 Dune::FieldVector::size*dimR> &_\bb_\bl_\bo_\bc_\bk()\n-450 {\n-451 // use integral_constant here to stay compatible with Int2Type\n-452 const std::integral_constant a = {};\n-453 return reinterpret_cast::\n-size*dimR>&>(tensor(a));\n-454 }\n-455\n-456 protected:\n-457 const Dune::FieldVector,dimR> &\n-_\b4_\b5_\b8 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar) const\n-459 {\n-460 return tensor_;\n-461 }\n-462 Dune::FieldVector,dimR> &\n-_\b4_\b6_\b3 _\bt_\be_\bn_\bs_\bo_\br(const std::integral_constant &dorderVar)\n-464 {\n-465 return tensor_;\n-466 }\n-467 template \n-_\b4_\b6_\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_\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-469 {\n-470 for (int rr=0; rr()[0];\n-472 }\n-473 template \n-_\b4_\b7_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn(const FieldVector &y,unsigned int r)\n-475 {\n-476 tensor_[0] = reinterpret_cast&>(y\n-[r*ThisLFETensor::size]);\n-477 }\n-478 template \n-_\b4_\b7_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn(unsigned int r,const FieldVector &y)\n-480 {\n-481 tensor_[r] = y;\n-482 }\n-_\b4_\b8_\b3 Dune::FieldVector _\bt_\be_\bn_\bs_\bo_\br_\b_;\n-484 };\n-485\n-486 // Implemnetation for DerivativeLayoutNS::derivative based layout\n-487 template \n-_\b4_\b8_\b8 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-489 {\n-_\b4_\b9_\b0 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-_\b4_\b9_\b1 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-492\n-_\b4_\b9_\b3 typedef F _\bF_\bi_\be_\bl_\bd;\n-_\b4_\b9_\b4 typedef F _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be;\n-495\n-_\b4_\b9_\b6 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-_\b4_\b9_\b7 static const unsigned int dimDomain = dimD;\n-_\b4_\b9_\b8 static const unsigned int dimRange = dimR;\n-_\b4_\b9_\b9 constexpr static int size = ScalarDeriv::size*dimR;\n-_\b5_\b0_\b0 typedef Dune::FieldVector _\bB_\bl_\bo_\bc_\bk;\n-501\n-502 template \n-_\b5_\b0_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const FF& f)\n-504 {\n-505 block() = field_cast(f);\n-506 return *this;\n-507 }\n-_\b5_\b0_\b8 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(const _\bB_\bl_\bo_\bc_\bk &t)\n-509 {\n-510 block() = t;\n-511 return *this;\n-512 }\n-513\n-_\b5_\b1_\b4 _\bT_\bh_\bi_\bs &operator*= ( const _\bf_\bi_\be_\bl_\bd_\b__\bt_\by_\bp_\be &f )\n-515 {\n-516 block() *= f;\n-517 return *this;\n-518 }\n-519\n-520 template \n-_\b5_\b2_\b1 void _\ba_\bx_\bp_\by(const FF &a, const _\bT_\bh_\bi_\bs &y)\n-522 {\n-523 block().axpy(field_cast(a),y._\bb_\bl_\bo_\bc_\bk());\n-524 }\n-525 // assign with same layout (only different Field)\n-526 template \n-_\b5_\b2_\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,_\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-528 {\n-529 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(y.block(),block());\n-530 }\n-531 // assign with different layout (same dimRange)\n-532 template \n-_\b5_\b3_\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-534 {\n-535 for (unsigned int rr=0; rr\n-_\b5_\b4_\b0 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-541 {\n-542 deriv_[r].assign(r,y);\n-543 }\n-544\n-_\b5_\b4_\b5 _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk()\n-546 {\n-547 return reinterpret_cast<_\bB_\bl_\bo_\bc_\bk&>(*this);\n-548 }\n-_\b5_\b4_\b9 const _\bB_\bl_\bo_\bc_\bk &_\bb_\bl_\bo_\bc_\bk() const\n-550 {\n-551 return reinterpret_cast(*this);\n-552 }\n-553\n-_\b5_\b5_\b4 _\bS_\bc_\ba_\bl_\ba_\br_\bD_\be_\br_\bi_\bv &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int r) {\n-555 return deriv_[r];\n-556 }\n-_\b5_\b5_\b7 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-558 return deriv_[r];\n-559 }\n-560 protected:\n-_\b5_\b6_\b1 Dune::FieldVector _\bd_\be_\br_\bi_\bv_\b_;\n-562 };\n-563\n-564 // ******************************************\n-565 // AXPY *************************************\n-566 // ******************************************\n-567 template \n-_\b5_\b6_\b8 struct _\bL_\bF_\bE_\bT_\be_\bn_\bs_\bo_\br_\bA_\bx_\bp_\by\n-569 {\n-570 template \n-_\b5_\b7_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-572 const Vec1 &x, Vec2 &y)\n-573 {\n-574 y.axpy(a,x);\n-575 }\n-576 };\n-577 template \n-_\b5_\b8_\b1 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-582 {\n-_\b5_\b8_\b3 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-584 template \n-_\b5_\b8_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-586 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n-587 {\n-588 const FieldVector &xx = x.template block();\n-589 for (int i=0; i\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:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\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 for (int rr=0; rr,\n-606 Vec2,deriv>_\b:_\b:_\ba_\bp_\bp_\bl_\by(rr,a,x[rr],y);\n-607 }\n-608 };\n-609 template \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,_\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-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 _\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-621 Vec2,deriv>_\b:_\b:_\ba_\bp_\bp_\bl_\by(r,a,x[0],y);\n-622 }\n-623 };\n-624 template \n-_\b6_\b2_\b8 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-629 {\n-_\b6_\b3_\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_\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-631 template \n-_\b6_\b3_\b2 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Field &a,\n-633 const _\bV_\be_\bc_\b1 &x, Vec2 &y)\n-634 {\n-635 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-636 const unsigned int rr = r*LFETensorType::size;\n-637 const FieldVector &xx = x.template block();\n-638 for (int i=0; i::dimension; ++i)\n-639 y[rr+i] += xx[i]*a;\n-640 }\n-641 };\n-642\n-643 // ***********************************************\n-644 // Assign ****************************************\n-645 // ***********************************************\n-646 template \n-_\b6_\b4_\b7 struct _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bA_\bs_\bs_\bi_\bg_\bn\n-648 {\n-_\b6_\b4_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const Vec1 &vec1,Vec2 &vec2)\n-650 {\n-651 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1,vec2);\n-652 }\n-653 };\n-654 template \n-_\b6_\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-657 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-658 {\n-_\b6_\b5_\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,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b6_\b6_\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,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b2;\n-_\b6_\b6_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-662 {\n-663 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-664 }\n-665 };\n-666 template \n-_\b6_\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-669 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-670 {\n-_\b6_\b7_\b1 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_\b7_\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:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b>\n-_\bV_\be_\bc_\b2;\n-_\b6_\b7_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-674 {\n-675 vec2.assign(vec1);\n-676 }\n-677 };\n-678 template \n-_\b6_\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-681 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-682 {\n-_\b6_\b8_\b3 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-_\b6_\b8_\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:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b2;\n-_\b6_\b8_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-686 {\n-687 vec2.assign(vec1);\n-688 }\n-689 };\n-690 template \n-_\b6_\b9_\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-693 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-694 {\n-_\b6_\b9_\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,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b6_\b9_\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,_\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-_\b6_\b9_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-698 {\n-699 vec2.assign(r,vec1);\n-700 }\n-701 };\n-702 template \n-_\b7_\b0_\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-705 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-706 {\n-_\b7_\b0_\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,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b0_\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-_\b7_\b0_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-710 {\n-711 vec2.assign(r,vec1);\n-712 }\n-713 };\n-714 template \n-_\b7_\b1_\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-717 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-718 {\n-_\b7_\b1_\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:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b2_\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_\b2_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-722 {\n-723 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-724 }\n-725 };\n-726 template \n-_\b7_\b2_\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-729 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-730 {\n-_\b7_\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_\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_\b3_\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_\b3_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-734 {\n-735 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-736 }\n-737 };\n-738 template \n-_\b7_\b4_\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-741 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-742 {\n-_\b7_\b4_\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,_\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_\b4 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_\b4_\b5 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-746 {\n-747 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-748 }\n-749 };\n-750 template \n-_\b7_\b5_\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-753 _\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs >\n-754 {\n-_\b7_\b5_\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_\b5_\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:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b2;\n-_\b7_\b5_\b7 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-758 {\n-759 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2.block());\n-760 }\n-761 };\n-762 template \n-_\b7_\b6_\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-765 F2 >\n-766 {\n-_\b7_\b6_\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,_\bl_\ba_\by_\bo_\bu_\bt_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b6_\b8 typedef F2 _\bV_\be_\bc_\b2;\n-_\b7_\b6_\b9 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-770 {\n-771 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.block(),vec2);\n-772 }\n-773 };\n-774 template \n-_\b7_\b7_\b7 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-778 {\n-_\b7_\b7_\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:_\bv_\ba_\bl_\bu_\be_\b> _\bV_\be_\bc_\b1;\n-_\b7_\b8_\b0 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b7_\b8_\b1 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-782 {\n-783 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template block<0>(),vec2);\n-784 }\n-785 };\n-786 template \n-_\b7_\b8_\b9 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-790 {\n-_\b7_\b9_\b1 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_\b9_\b2 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b7_\b9_\b3 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-794 {\n-795 for (int rr=0; rr()[0].block(),vec2[rr]);\n-797 }\n-798 };\n-799 template \n-_\b8_\b0_\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-803 {\n-_\b8_\b0_\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_\b0_\b5 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b0_\b6 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-807 {\n-808 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template tensor<0>()[0].block(),vec2[r]);\n-809 }\n-810 };\n-811 template \n-_\b8_\b1_\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-815 {\n-_\b8_\b1_\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_\b1_\b7 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b1_\b8 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-819 {\n-820 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1[0].template tensor<0>()[0].block(),vec2[r]);\n-821 }\n-822 };\n-823 template \n-_\b8_\b2_\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,FieldVector >\n-827 {\n-_\b8_\b2_\b8 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_\b9 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b3_\b0 static void _\ba_\bp_\bp_\bl_\by(unsigned int r,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-831 {\n-832 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1.template tensor<0>()[0].block(),vec2);\n-833 }\n-834 };\n-835 template \n-_\b8_\b3_\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-839 {\n-_\b8_\b4_\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:_\bd_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\b> _\bV_\be_\bc_\b1;\n-_\b8_\b4_\b1 typedef FieldVector _\bV_\be_\bc_\b2;\n-_\b8_\b4_\b2 static void _\ba_\bp_\bp_\bl_\by(unsigned int /*r*/,const _\bV_\be_\bc_\b1 &vec1,_\bV_\be_\bc_\b2 &vec2)\n-843 {\n-844 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(vec1[0].template tensor<0>()[0].block(),vec2);\n-845 }\n-846 };\n-847\n-848 // ***********************************************\n-849 // IO ********************************************\n-850 // ***********************************************\n-851 template \n-_\b8_\b5_\b2 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-853 {\n-854 return out << tensor._\bb_\bl_\bo_\bc_\bk();\n-855 }\n-856#if 0\n-857 template \n-858 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const ScalarDerivatives<\n-F,dimD,deriv > &d )\n-859 {\n-860 out << static_cast &>(d);\n-861 out << \" , \" << d.tensor() << std::endl;\n-862 return out;\n-863 }\n-864 template \n-865 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<_\b ( std::ostream &out, const ScalarDerivatives<\n-F,dimD,0 > &d )\n-866 {\n-867 out << d.tensor() << std::endl;\n-868 return out;\n-869 }\n-870#endif\n-871 template \n-_\b8_\b7_\b2 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-873 {\n-874 out << \" ( \";\n-875 out << d[0];\n-876 for (int r=1; r\n-_\b8_\b8_\b4 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-885 {\n-886 out << static_cast &>(d);\n-887 out << \" ( \";\n-888 out << d[0];\n-889 for (int r=1; r\n-_\b8_\b9_\b7 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-898 {\n-899 out << \" ( \";\n-900 out << d[0];\n-901 for (int r=1; r\n-_\b9_\b0_\b9 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-910 {\n-911 out << \" ( \";\n-912 out << d[0];\n-913 for (int r=1; r\n-_\b9_\b2_\b1 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-922 {\n-923 out << \"Number of basis functions: \" << y.size() << std::endl;\n-924 for (unsigned int i=0; i\n+_\b2_\b0 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b2_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+21 [[deprecated(\"use LagrangePyramidLocalFiniteElement instead\")]]\n+22 = _\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+23\n+24}\n+25\n+26#endif\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\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:_\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:152\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:168\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:168\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:168\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:_\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:107\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:154\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:111\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: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:_\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:149\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:158\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:144\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:113\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:172\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:178\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:183\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:179\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:203\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:184\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:180\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: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 _\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:301\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:227\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:314\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:192\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: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:_\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:287\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:181\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:247\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:280\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:334\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:261\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:220\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:233\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: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::derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:252\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: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:_\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:190\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:343\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: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:_\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:274\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:241\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:267\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:328\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:293\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: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:_\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:307\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:348\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:426\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: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 _\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: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(const std::\n-integral_constant< int, 0 > &dorderVar)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:463\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:391\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:352\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:349\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:468\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: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 _\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: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:_\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: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:_\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:374\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:353\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:429\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: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:_\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: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 _\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:421\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: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:_\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: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(const Derivatives< Fy, dimD, dimR, 0, DerivativeLayoutNS::\n-derivative > &y)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn tensor.hh:396\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: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:_\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: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:_\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: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:_\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:483\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: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:_\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:362\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:417\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:386\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:489\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:503\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:545\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:493\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: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:\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:494\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:540\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:554\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:533\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: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 _\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:491\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:557\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:521\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:508\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:500\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: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-_\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:527\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:569\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:571\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:585\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:583\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: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:_\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 _\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: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 _\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: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:_\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:632\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:630\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:648\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:649\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:659\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:660\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:661\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:671\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:673\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:672\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:684\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:683\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:685\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:695\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:697\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:696\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:707\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:709\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:708\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:719\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:720\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:721\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:731\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:733\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:732\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:744\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:745\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:743\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:756\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:757\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:755\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:768\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:769\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:767\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:779\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:780\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:781\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:791\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:793\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:792\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:804\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:805\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:806\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:818\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:816\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:817\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:829\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:828\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:830\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:840\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:842\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:841\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:812\n ===============================================================================\n 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: multiindex.hh File Reference\n+dune-localfunctions: lagrangecube.hh File Reference\n \n \n \n \n \n \n \n@@ -65,75 +65,47 @@\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 <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/localinterpolation.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::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,65 +1,30 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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_\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:_\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:_\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/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: multiindex.hh Source File\n+dune-localfunctions: lagrangecube.hh Source File\n \n \n \n \n \n \n \n@@ -70,644 +70,747 @@\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 (C) 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/fvector.hh>
    \n-
    12
    \n-\n+
    11#include <dune/common/fmatrix.hh>
    \n+
    12#include <dune/common/fvector.hh>
    \n+
    13#include <dune/common/math.hh>
    \n
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 /****************************************************************
    \n-
    18 * Provide a Field class which can be used in evaluation methods
    \n-
    19 * to produce MultiIndex presentation of polynomials.
    \n-
    20 ****************************************************************/
    \n-
    21 // Internal Forward Declarations
    \n-
    22 // -----------------------------
    \n-
    23
    \n-
    24 template< int dim, class Field >
    \n-
    25 class MultiIndex;
    \n-
    26
    \n-
    27 template< int dim, class Field >
    \n-
    28 std::ostream &operator<< ( std::ostream &, const MultiIndex< dim,Field > & );
    \n-
    29
    \n-
    30
    \n-
    31
    \n-
    32 // MultiIndex
    \n-
    33 // ----------
    \n-
    34
    \n-
    35 template< int dim,class Field >
    \n-
    \n-\n-
    37 {
    \n-\n-
    39
    \n-
    40 friend std::ostream &operator<<<> ( std::ostream &, const This & );
    \n-
    41
    \n-
    42 public:
    \n-
    43 static const int dimension = dim;
    \n-
    44
    \n-
    \n-\n-
    46 : vecZ_( 0 ),
    \n-
    47 vecOMZ_( 0 ),
    \n-
    48 factor_( 1. ),
    \n-
    49 next_( 0 )
    \n-
    50 {}
    \n-
    \n-
    51 template <class F>
    \n-
    \n-
    52 explicit MultiIndex (const F &f)
    \n-
    53 : vecZ_( 0 ),
    \n-
    54 vecOMZ_( 0 ),
    \n-
    55 factor_( field_cast<Field>(f) ),
    \n-
    56 next_( 0 )
    \n-
    57 {}
    \n-
    \n-
    58
    \n-
    \n-
    59 MultiIndex ( int, const This &other )
    \n-
    60 : vecZ_( other.vecOMZ_ ),
    \n-
    61 vecOMZ_( other.vecZ_ ),
    \n-
    62 factor_( other.factor_ )
    \n-
    63 {
    \n-
    64 assert(!other.next_);
    \n-
    65 if (other.next_)
    \n-
    66 {
    \n-
    67 next_ = new This( *(other.next_) );
    \n-
    68 }
    \n-
    69 else
    \n-
    70 next_ = 0;
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    \n-
    73 MultiIndex ( const This &other )
    \n-
    74 : vecZ_( other.vecZ_ ),
    \n-
    75 vecOMZ_( other.vecOMZ_ ),
    \n-
    76 factor_( other.factor_ )
    \n-
    77 {
    \n-
    78 if (other.next_)
    \n-
    79 {
    \n-
    80 next_ = new This( *(other.next_) );
    \n-
    81 }
    \n-
    82 else
    \n-
    83 next_ = 0;
    \n-
    84 }
    \n-
    \n-
    85
    \n-
    \n-\n-
    87 {
    \n-
    88 remove();
    \n-
    89 }
    \n-
    \n-
    90
    \n-
    \n-
    91 int z(int i) const
    \n-
    92 {
    \n-
    93 return vecZ_[i];
    \n-
    94 }
    \n-
    \n-
    \n-
    95 int omz(int i) const
    \n-
    96 {
    \n-
    97 return vecOMZ_[i];
    \n-
    98 }
    \n-
    \n-
    \n-
    99 const Field &factor() const
    \n-
    100 {
    \n-
    101 return factor_;
    \n-
    102 }
    \n-
    \n-
    103
    \n-
    \n-
    104 This &operator= ( const This &other )
    \n-
    105 {
    \n-
    106 remove();
    \n-
    107 vecZ_ = other.vecZ_;
    \n-
    108 vecOMZ_ = other.vecOMZ_;
    \n-
    109 factor_ = other.factor_;
    \n-
    110 if (other.next_)
    \n-
    111 next_ = new This(*(other.next_));
    \n-
    112 return *this;
    \n-
    113 }
    \n-
    \n-
    \n-\n-
    115 {
    \n-
    116 remove();
    \n-
    117 vecZ_ = 0;
    \n-
    118 vecOMZ_ = 0;
    \n-
    119 factor_ = 0.;
    \n-
    120 return *this;
    \n-
    121 }
    \n-
    \n-
    \n-\n-
    123 {
    \n-
    124 remove();
    \n-
    125 vecZ_ = 0;
    \n-
    126 vecOMZ_ = 0;
    \n-
    127 factor_ = 1.;
    \n-
    128 return *this;
    \n-
    129 }
    \n-
    \n-
    130 template <class F>
    \n-
    \n-
    131 This &operator= ( const F &f )
    \n-
    132 {
    \n-
    133 remove();
    \n-
    134 vecZ_ = 0;
    \n-
    135 vecOMZ_ = 0;
    \n-
    136 factor_ = field_cast<Field>(f);
    \n-
    137 return *this;
    \n-
    138 }
    \n-
    \n-
    139
    \n-
    \n-
    140 bool operator== (const This &other) const
    \n-
    141 {
    \n-
    142 assert(!next_ && !other.next_);
    \n-
    143 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ && factor_==other.factor_);
    \n-
    144 }
    \n-
    \n-
    145
    \n-
    146 template <class F>
    \n-
    \n-
    147 This &operator*= ( const F &f )
    \n-
    148 {
    \n-
    149 factor_ *= field_cast<Field>(f);
    \n-
    150 if (next_)
    \n-
    151 (*next_) *= f;
    \n-
    152 return *this;
    \n-
    153 }
    \n-
    \n-
    154 template <class F>
    \n-
    \n-
    155 This &operator/= ( const F &f )
    \n-
    156 {
    \n-
    157 factor_ /= field_cast<Field>(f);
    \n-
    158 if (next_)
    \n-
    159 (*next_) /= f;
    \n-
    160 return *this;
    \n-
    161 }
    \n-
    \n-
    162
    \n-
    \n-
    163 This &operator*= ( const This &other )
    \n-
    164 {
    \n-
    165 assert(!other.next_);
    \n-
    166 vecZ_ += other.vecZ_;
    \n-
    167 vecOMZ_ += other.vecOMZ_;
    \n-
    168 factor_ *= other.factor_;
    \n-
    169 if (next_)
    \n-
    170 (*next_) *= other;
    \n-
    171 return *this;
    \n-
    172 }
    \n-
    \n-
    \n-
    173 This &operator/= ( const This &other )
    \n-
    174 {
    \n-
    175 assert(!other.next_);
    \n-
    176 vecZ_ -= other.vecZ_;
    \n-
    177 vecOMZ_ -= other.vecOMZ_;
    \n-
    178 factor_ /= other.factor_;
    \n-
    179 if (next_)
    \n-
    180 (*next_) /= other;
    \n-
    181 return *this;
    \n-
    182 }
    \n-
    \n-
    183
    \n-
    \n-
    184 This &operator+= ( const This &other )
    \n-
    185 {
    \n-
    186 assert(!other.next_);
    \n-
    187 if (std::abs(other.factor_)<1e-10)
    \n-
    188 return *this;
    \n-
    189 if (std::abs(factor_)<1e-10)
    \n-
    190 {
    \n-
    191 *this = other;
    \n-
    192 return *this;
    \n-
    193 }
    \n-
    194 if (!sameMultiIndex(other))
    \n-
    195 {
    \n-
    196 if (next_)
    \n-
    197 (*next_)+=other;
    \n-
    198 else
    \n-
    199 {
    \n-
    200 next_ = new This(other);
    \n-
    201 }
    \n-
    202 }
    \n-
    203 else
    \n-
    204 factor_ += other.factor_;
    \n-
    205 return *this;
    \n-
    206 }
    \n-
    \n-
    \n-
    207 This &operator-= ( const This &other )
    \n-
    208 {
    \n-
    209 assert(!other.next_);
    \n-
    210 if (!sameMultiIndex(other))
    \n-
    211 {
    \n-
    212 if (next_)
    \n-
    213 next_-=other;
    \n-
    214 else
    \n-
    215 {
    \n-
    216 next_ = new This(other);
    \n-
    217 }
    \n-
    218 }
    \n-
    219 else
    \n-
    220 factor_ -= other.factor_;
    \n-
    221 return *this;
    \n-
    222 }
    \n-
    \n-
    223
    \n-
    224 template <class F>
    \n-
    \n-
    225 This operator* ( const F &f ) const
    \n-
    226 {
    \n-
    227 This z = *this;
    \n-
    228 return (z *= f);
    \n-
    229 }
    \n-
    \n-
    230 template <class F>
    \n-
    \n-
    231 This operator/ ( const F &f ) const
    \n-
    232 {
    \n-
    233 This z = *this;
    \n-
    234 return (z /= f);
    \n-
    235 }
    \n-
    \n-
    236
    \n-
    \n-
    237 This operator* ( const This &other ) const
    \n+
    15#include <dune/geometry/referenceelements.hh>
    \n+
    16
    \n+\n+\n+\n+\n+
    21
    \n+
    22namespace Dune { namespace Impl
    \n+
    23{
    \n+
    24 // Forward declaration
    \n+
    25 template<class LocalBasis>
    \n+
    26 class LagrangeCubeLocalInterpolation;
    \n+
    27
    \n+
    38 template<class D, class R, unsigned int dim, unsigned int k>
    \n+
    39 class LagrangeCubeLocalBasis
    \n+
    40 {
    \n+
    41 friend class LagrangeCubeLocalInterpolation<LagrangeCubeLocalBasis<D,R,dim,k> >;
    \n+
    42
    \n+
    43 // i-th Lagrange polynomial of degree k in one dimension
    \n+
    44 static R p(unsigned int i, D x)
    \n+
    45 {
    \n+
    46 R result(1.0);
    \n+
    47 for (unsigned int j=0; j<=k; j++)
    \n+
    48 if (j!=i) result *= (k*x-j)/((int)i-(int)j);
    \n+
    49 return result;
    \n+
    50 }
    \n+
    51
    \n+
    52 // derivative of ith Lagrange polynomial of degree k in one dimension
    \n+
    53 static R dp(unsigned int i, D x)
    \n+
    54 {
    \n+
    55 R result(0.0);
    \n+
    56
    \n+
    57 for (unsigned int j=0; j<=k; j++)
    \n+
    58 {
    \n+
    59 if (j!=i)
    \n+
    60 {
    \n+
    61 R prod( (k*1.0)/((int)i-(int)j) );
    \n+
    62 for (unsigned int l=0; l<=k; l++)
    \n+
    63 if (l!=i && l!=j)
    \n+
    64 prod *= (k*x-l)/((int)i-(int)l);
    \n+
    65 result += prod;
    \n+
    66 }
    \n+
    67 }
    \n+
    68 return result;
    \n+
    69 }
    \n+
    70
    \n+
    71 // Second derivative of j-th Lagrange polynomial of degree k in one dimension
    \n+
    72 // Formula and notation taken from https://en.wikipedia.org/wiki/Lagrange_polynomial#Derivatives
    \n+
    73 static R ddp(unsigned int j, D x)
    \n+
    74 {
    \n+
    75 R result(0.0);
    \n+
    76
    \n+
    77 for (unsigned int i=0; i<=k; i++)
    \n+
    78 {
    \n+
    79 if (i==j)
    \n+
    80 continue;
    \n+
    81
    \n+
    82 R sum(0);
    \n+
    83
    \n+
    84 for (unsigned int m=0; m<=k; m++)
    \n+
    85 {
    \n+
    86 if (m==i || m==j)
    \n+
    87 continue;
    \n+
    88
    \n+
    89 R prod( (k*1.0)/((int)j-(int)m) );
    \n+
    90 for (unsigned int l=0; l<=k; l++)
    \n+
    91 if (l!=i && l!=j && l!=m)
    \n+
    92 prod *= (k*x-l)/((int)j-(int)l);
    \n+
    93 sum += prod;
    \n+
    94 }
    \n+
    95
    \n+
    96 result += sum * ( (k*1.0)/((int)j-(int)i) );
    \n+
    97 }
    \n+
    98
    \n+
    99 return result;
    \n+
    100 }
    \n+
    101
    \n+
    102 // Return i as a d-digit number in the (k+1)-nary system
    \n+
    103 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n+
    104 {
    \n+
    105 std::array<unsigned int,dim> alpha;
    \n+
    106 for (unsigned int j=0; j<dim; j++)
    \n+
    107 {
    \n+
    108 alpha[j] = i % (k+1);
    \n+
    109 i = i/(k+1);
    \n+
    110 }
    \n+
    111 return alpha;
    \n+
    112 }
    \n+
    113
    \n+
    114 public:
    \n+
    115 using Traits = LocalBasisTraits<D,dim,FieldVector<D,dim>,R,1,FieldVector<R,1>,FieldMatrix<R,1,dim> >;
    \n+
    116
    \n+
    119 static constexpr unsigned int size ()
    \n+
    120 {
    \n+
    121 return power(k+1, dim);
    \n+
    122 }
    \n+
    123
    \n+
    125 void evaluateFunction(const typename Traits::DomainType& x,
    \n+
    126 std::vector<typename Traits::RangeType>& out) const
    \n+
    127 {
    \n+
    128 out.resize(size());
    \n+
    129
    \n+
    130 // Specialization for zero-order case
    \n+
    131 if (k==0)
    \n+
    132 {
    \n+
    133 out[0] = 1;
    \n+
    134 return;
    \n+
    135 }
    \n+
    136
    \n+
    137 if (k==1)
    \n+
    138 {
    \n+
    139 for (size_t i=0; i<size(); i++)
    \n+
    140 {
    \n+
    141 out[i] = 1;
    \n+
    142
    \n+
    143 for (unsigned int j=0; j<dim; j++)
    \n+
    144 // if j-th bit of i is set multiply with x[j], else with 1-x[j]
    \n+
    145 out[i] *= (i & (1<<j)) ? x[j] : 1-x[j];
    \n+
    146 }
    \n+
    147 return;
    \n+
    148 }
    \n+
    149
    \n+
    150 // General case
    \n+
    151 for (size_t i=0; i<size(); i++)
    \n+
    152 {
    \n+
    153 // convert index i to multiindex
    \n+
    154 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    155
    \n+
    156 // initialize product
    \n+
    157 out[i] = 1.0;
    \n+
    158
    \n+
    159 // dimension by dimension
    \n+
    160 for (unsigned int j=0; j<dim; j++)
    \n+
    161 out[i] *= p(alpha[j],x[j]);
    \n+
    162 }
    \n+
    163 }
    \n+
    164
    \n+
    170 void evaluateJacobian(const typename Traits::DomainType& x,
    \n+
    171 std::vector<typename Traits::JacobianType>& out) const
    \n+
    172 {
    \n+
    173 out.resize(size());
    \n+
    174
    \n+
    175 // Specialization for k==0
    \n+
    176 if (k==0)
    \n+
    177 {
    \n+
    178 std::fill(out[0][0].begin(), out[0][0].end(), 0);
    \n+
    179 return;
    \n+
    180 }
    \n+
    181
    \n+
    182 // Specialization for k==1
    \n+
    183 if (k==1)
    \n+
    184 {
    \n+
    185 // Loop over all shape functions
    \n+
    186 for (size_t i=0; i<size(); i++)
    \n+
    187 {
    \n+
    188 // Loop over all coordinate directions
    \n+
    189 for (unsigned int j=0; j<dim; j++)
    \n+
    190 {
    \n+
    191 // Initialize: the overall expression is a product
    \n+
    192 // if j-th bit of i is set to 1, else -11
    \n+
    193 out[i][0][j] = (i & (1<<j)) ? 1 : -1;
    \n+
    194
    \n+
    195 for (unsigned int l=0; l<dim; l++)
    \n+
    196 {
    \n+
    197 if (j!=l)
    \n+
    198 // if l-th bit of i is set multiply with x[l], else with 1-x[l]
    \n+
    199 out[i][0][j] *= (i & (1<<l)) ? x[l] : 1-x[l];
    \n+
    200 }
    \n+
    201 }
    \n+
    202 }
    \n+
    203 return;
    \n+
    204 }
    \n+
    205
    \n+
    206 // The general case
    \n+
    207
    \n+
    208 // Loop over all shape functions
    \n+
    209 for (size_t i=0; i<size(); i++)
    \n+
    210 {
    \n+
    211 // convert index i to multiindex
    \n+
    212 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    213
    \n+
    214 // Loop over all coordinate directions
    \n+
    215 for (unsigned int j=0; j<dim; j++)
    \n+
    216 {
    \n+
    217 // Initialize: the overall expression is a product
    \n+
    218 // if j-th bit of i is set to -1, else 1
    \n+
    219 out[i][0][j] = dp(alpha[j],x[j]);
    \n+
    220
    \n+
    221 // rest of the product
    \n+
    222 for (unsigned int l=0; l<dim; l++)
    \n+
    223 if (l!=j)
    \n+
    224 out[i][0][j] *= p(alpha[l],x[l]);
    \n+
    225 }
    \n+
    226 }
    \n+
    227 }
    \n+
    228
    \n+
    235 void partial(const std::array<unsigned int,dim>& order,
    \n+
    236 const typename Traits::DomainType& in,
    \n+
    237 std::vector<typename Traits::RangeType>& out) const
    \n
    238 {
    \n-
    239 This z = *this;
    \n-
    240 return (z *= other);
    \n-
    241 }
    \n-
    \n-
    \n-
    242 This operator/ ( const This &other ) const
    \n-
    243 {
    \n-
    244 This z = *this;
    \n-
    245 return (z /= other);
    \n-
    246 }
    \n-
    \n-
    247
    \n-
    \n-
    248 This operator+ ( const This &other ) const
    \n-
    249 {
    \n-
    250 This z = *this;
    \n-
    251 return (z += other);
    \n-
    252 }
    \n-
    \n-
    \n-
    253 This operator- ( const This &other ) const
    \n-
    254 {
    \n-
    255 This z = *this;
    \n-
    256 return (z -= other);
    \n-
    257 }
    \n-
    \n+
    239 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    240
    \n+
    241 out.resize(size());
    \n+
    242
    \n+
    243 if (k==0)
    \n+
    244 {
    \n+
    245 out[0] = (totalOrder==0);
    \n+
    246 return;
    \n+
    247 }
    \n+
    248
    \n+
    249 if (k==1)
    \n+
    250 {
    \n+
    251 if (totalOrder == 0)
    \n+
    252 {
    \n+
    253 evaluateFunction(in, out);
    \n+
    254 }
    \n+
    255 else if (totalOrder == 1)
    \n+
    256 {
    \n+
    257 out.resize(size());
    \n
    258
    \n-
    \n-
    259 void set ( int d, int power = 1 )
    \n-
    260 {
    \n-
    261 vecZ_[ d ] = power;
    \n-
    262 }
    \n-
    \n-
    263
    \n-
    \n-
    264 int absZ () const
    \n-
    265 {
    \n-
    266 int ret = 0;
    \n-
    267 for( int i = 0; i < dimension; ++i )
    \n-
    268 ret += std::abs( vecZ_[ i ] );
    \n-
    269 return ret;
    \n-
    270 }
    \n-
    \n-
    271
    \n-
    \n-
    272 int absOMZ() const
    \n-
    273 {
    \n-
    274 int ret = 0;
    \n-
    275 for( int i = 0; i < dimension; ++i )
    \n-
    276 ret += std::abs( vecOMZ_[ i ] );
    \n-
    277 return ret;
    \n-
    278 }
    \n-
    \n-
    279
    \n-
    \n-
    280 bool sameMultiIndex(const This &ind)
    \n-
    281 {
    \n-
    282 for( int i = 0; i < dimension; ++i )
    \n-
    283 {
    \n-
    284 if ( vecZ_[i] != ind.vecZ_[i] ||
    \n-
    285 vecOMZ_[i] != vecOMZ_[i] )
    \n-
    286 return false;
    \n-
    287 }
    \n-
    288 return true;
    \n-
    289 }
    \n-
    \n-
    290
    \n-
    291 private:
    \n-
    292 void remove()
    \n-
    293 {
    \n-
    294 if (next_)
    \n-
    295 {
    \n-
    296 next_->remove();
    \n-
    297 delete next_;
    \n-
    298 next_ = 0;
    \n-
    299 }
    \n-
    300 }
    \n-
    301
    \n-
    302 typedef Dune::FieldVector< int, dimension > Vector;
    \n-
    303
    \n-
    304 Vector vecZ_;
    \n-
    305 Vector vecOMZ_;
    \n-
    306 Field factor_;
    \n-
    307
    \n-
    308 This *next_;
    \n-
    309 };
    \n-
    \n-
    310
    \n-
    311 template <int dim, class Field, class F>
    \n-
    \n-\n-
    313 const MultiIndex<dim,Field> &m)
    \n-
    314 {
    \n-\n-
    316 return (z *= f);
    \n-
    317 }
    \n-
    \n-
    318 template <int dim, class Field, class F>
    \n-
    \n-\n-
    320 const MultiIndex<dim,Field> &m)
    \n-
    321 {
    \n-\n-
    323 return (z /= f);
    \n-
    324 }
    \n-
    \n-
    325
    \n-
    326 template <int d, class F>
    \n-
    \n-
    327 std::ostream &operator<<(std::ostream& out,const std::vector<MultiIndex<d,F> >& y) {
    \n-
    328 for (unsigned int r=0; r<y.size(); ++r) {
    \n-
    329 out << "f_{" << r << "}(" << char('a');
    \n-
    330 for (int i=1; i<d; ++i)
    \n-
    331 out << "," << char('a'+i);
    \n-
    332 out << ")=";
    \n-
    333 out << y[r] << std::endl;
    \n-
    334 }
    \n-
    335 return out;
    \n-
    336 }
    \n-
    \n-
    337 template <int d,class F,int dimR>
    \n-
    \n-
    338 std::ostream &operator<<(std::ostream& out,
    \n-
    339 const std::vector<Dune::FieldVector<MultiIndex<d,F>,dimR> >& y) {
    \n-
    340 out << "\\\\begin{eqnarray*}" << std::endl;
    \n-
    341 for (unsigned int k=0; k<y.size(); ++k) {
    \n-
    342 out << "f_{" << k << "}(" << char('a');
    \n-
    343 for (int i=1; i<d; ++i)
    \n-
    344 out << "," << char('a'+i);
    \n-
    345 out << ") &=& ( ";
    \n-
    346 out << y[k][0] ;
    \n-
    347 for (unsigned int r=1; r<dimR; ++r) {
    \n-
    348 out << " , " << y[k][r] ;
    \n-
    349 }
    \n-
    350 out << " ) \\\\\\\\" << std::endl;
    \n-
    351 }
    \n-
    352 out << "\\\\end{eqnarray*}" << std::endl;
    \n-
    353 return out;
    \n-
    354 }
    \n-
    \n-
    355 template <int d,class F,int dimR1,int dimR2>
    \n-
    \n-
    356 std::ostream &operator<<(std::ostream& out,
    \n-
    357 const std::vector<Dune::FieldMatrix<MultiIndex<d,F>,dimR1,dimR2> >& y) {
    \n-
    358 out << "\\\\begin{eqnarray*}" << std::endl;
    \n-
    359 for (unsigned int k=0; k<y.size(); ++k) {
    \n-
    360 for (int q=0; q<dimR2; q++) {
    \n-
    361 out << "d_{" << char('a'+q) << "}f_{" << k << "}(" << char('a');
    \n-
    362 for (int i=1; i<d; ++i)
    \n-
    363 out << "," << char('a'+i);
    \n-
    364 out << ") &=& ( ";
    \n-
    365 out << y[k][0][q] ;
    \n-
    366 for (unsigned int r=1; r<dimR1; ++r) {
    \n-
    367 out << " , " << y[k][r][q] ;
    \n-
    368 }
    \n-
    369 out << " ) \\\\\\\\" << std::endl;
    \n-
    370 }
    \n-
    371 }
    \n-
    372 out << "\\\\end{eqnarray*}" << std::endl;
    \n-
    373 return out;
    \n-
    374 }
    \n-
    \n-
    375 template <int d, class F>
    \n-
    \n-
    376 std::ostream &operator<<(std::ostream& out,const MultiIndex<d,F>& val)
    \n-
    377 {
    \n-
    378 bool first = true;
    \n-
    379 const MultiIndex<d,F> *m = &val;
    \n-
    380 do {
    \n-
    381 if (m->absZ()==0 && std::abs(m->factor())<1e-10)
    \n-
    382 {
    \n-
    383 if (!m->next_ || !first)
    \n-
    384 {
    \n-
    385 out << "0";
    \n-
    386 break;
    \n-
    387 }
    \n-
    388 else {
    \n-
    389 m = m->next_;
    \n-
    390 continue;
    \n-
    391 }
    \n-
    392 }
    \n-
    393 if (m->factor()>0 && !first)
    \n-
    394 out << " + ";
    \n-
    395 else if (m->factor()<0)
    \n-
    396 if (!first)
    \n-
    397 out << " - ";
    \n-
    398 else
    \n-
    399 out << "- ";
    \n-
    400 else
    \n-
    401 out << " ";
    \n-
    402 first = false;
    \n-
    403 F f = std::abs(m->factor());
    \n-
    404 if (m->absZ()==0)
    \n-
    405 out << f;
    \n-
    406 else {
    \n-
    407 if ( std::abs(f)<1e-10)
    \n-
    408 out << 0;
    \n-
    409 else
    \n-
    410 {
    \n-
    411 F f_1(f);
    \n-
    412 f_1 -= 1.; // better Unity<F>();
    \n-
    413 if ( std::abs(f_1)>1e-10)
    \n-
    414 out << f;
    \n-
    415 int absVal = 0;
    \n-
    416 for (int i=0; i<d; ++i) {
    \n-
    417 if (m->vecZ_[i]==0)
    \n-
    418 continue;
    \n-
    419 else if (m->vecZ_[i]==1)
    \n-
    420 out << char('a'+i);
    \n-
    421 else if (m->vecZ_[i]>0)
    \n-
    422 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n-
    423 else if (m->vecZ_[i]<0)
    \n-
    424 out << char('a'+i) << "^" << m->vecZ_[i] << "";
    \n-
    425 absVal += m->vecZ_[i];
    \n-
    426 if (absVal<m->absZ()) out << "";
    \n-
    427 }
    \n-
    428 }
    \n-
    429 }
    \n-
    430 /*
    \n-
    431 if (mi.absOMZ()>0) {
    \n-
    432 for (int i=0;i<=mi.absZ();++i) {
    \n-
    433 if (mi.vecOMZ_[i]==0)
    \n-
    434 continue;
    \n-
    435 else if (mi.vecOMZ_[i]==1)
    \n-
    436 out << (1-char('a'+i));
    \n-
    437 else if (mi.vecOMZ_[i]>0)
    \n-
    438 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n-
    439 else if (mi.vecOMZ_[i]<0)
    \n-
    440 out << (1-char('a'+i)) << "^" << mi.vecOMZ_[i];
    \n-
    441 if (i==mi.absZ()+1) out << "*";
    \n-
    442 }
    \n-
    443 }
    \n-
    444 */
    \n-
    445 m = m->next_;
    \n-
    446 } while (m);
    \n-
    447 return out;
    \n-
    448 }
    \n-
    \n-
    449
    \n-
    450 template< int dim, class F>
    \n-
    \n-
    451 struct Unity< MultiIndex< dim, F > >
    \n-
    452 {
    \n-\n-
    454
    \n-
    \n-
    455 operator Field () const
    \n-
    456 {
    \n-
    457 return Field();
    \n-
    458 }
    \n-
    \n-
    459
    \n-
    \n-
    460 Field operator- ( const Field &other ) const
    \n-
    461 {
    \n-
    462 return Field( 1, other );
    \n-
    463 }
    \n-
    \n+
    259 auto direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    260 if (direction >= dim)
    \n+
    261 DUNE_THROW(RangeError, "Direction of partial derivative not found!");
    \n+
    262
    \n+
    263 // Loop over all shape functions
    \n+
    264 for (std::size_t i = 0; i < size(); ++i)
    \n+
    265 {
    \n+
    266 // Initialize: the overall expression is a product
    \n+
    267 // if j-th bit of i is set to 1, otherwise to -1
    \n+
    268 out[i] = (i & (1<<direction)) ? 1 : -1;
    \n+
    269
    \n+
    270 for (unsigned int j = 0; j < dim; ++j)
    \n+
    271 {
    \n+
    272 if (direction != j)
    \n+
    273 // if j-th bit of i is set multiply with in[j], else with 1-in[j]
    \n+
    274 out[i] *= (i & (1<<j)) ? in[j] : 1-in[j];
    \n+
    275 }
    \n+
    276 }
    \n+
    277 }
    \n+
    278 else if (totalOrder == 2)
    \n+
    279 {
    \n+
    280
    \n+
    281 for (size_t i=0; i<size(); i++)
    \n+
    282 {
    \n+
    283 // convert index i to multiindex
    \n+
    284 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    285
    \n+
    286 // Initialize: the overall expression is a product
    \n+
    287 out[i][0] = 1.0;
    \n+
    288
    \n+
    289 // rest of the product
    \n+
    290 for (std::size_t l=0; l<dim; l++)
    \n+
    291 {
    \n+
    292 switch (order[l])
    \n+
    293 {
    \n+
    294 case 0:
    \n+
    295 out[i][0] *= p(alpha[l],in[l]);
    \n+
    296 break;
    \n+
    297 case 1:
    \n+
    298 //std::cout << "dp: " << dp(alpha[l],in[l]) << std::endl;
    \n+
    299 out[i][0] *= dp(alpha[l],in[l]);
    \n+
    300 break;
    \n+
    301 case 2:
    \n+
    302 out[i][0] *= 0;
    \n+
    303 break;
    \n+
    304 default:
    \n+
    305 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    306 }
    \n+
    307 }
    \n+
    308 }
    \n+
    309 }
    \n+
    310 else
    \n+
    311 DUNE_THROW(NotImplemented, "Partial derivative of order " << totalOrder << " is not implemented!");
    \n+
    312
    \n+
    313 return;
    \n+
    314 }
    \n+
    315
    \n+
    316 // The case k>1
    \n+
    317
    \n+
    318 // Loop over all shape functions
    \n+
    319 for (size_t i=0; i<size(); i++)
    \n+
    320 {
    \n+
    321 // convert index i to multiindex
    \n+
    322 std::array<unsigned int,dim> alpha(multiindex(i));
    \n+
    323
    \n+
    324 // Initialize: the overall expression is a product
    \n+
    325 out[i][0] = 1.0;
    \n+
    326
    \n+
    327 // rest of the product
    \n+
    328 for (std::size_t l=0; l<dim; l++)
    \n+
    329 {
    \n+
    330 switch (order[l])
    \n+
    331 {
    \n+
    332 case 0:
    \n+
    333 out[i][0] *= p(alpha[l],in[l]);
    \n+
    334 break;
    \n+
    335 case 1:
    \n+
    336 out[i][0] *= dp(alpha[l],in[l]);
    \n+
    337 break;
    \n+
    338 case 2:
    \n+
    339 out[i][0] *= ddp(alpha[l],in[l]);
    \n+
    340 break;
    \n+
    341 default:
    \n+
    342 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    343 }
    \n+
    344 }
    \n+
    345 }
    \n+
    346 }
    \n+
    347
    \n+
    349 static constexpr unsigned int order ()
    \n+
    350 {
    \n+
    351 return k;
    \n+
    352 }
    \n+
    353 };
    \n+
    354
    \n+
    360 template<unsigned int dim, unsigned int k>
    \n+
    361 class LagrangeCubeLocalCoefficients
    \n+
    362 {
    \n+
    363 // Return i as a d-digit number in the (k+1)-nary system
    \n+
    364 static std::array<unsigned int,dim> multiindex (unsigned int i)
    \n+
    365 {
    \n+
    366 std::array<unsigned int,dim> alpha;
    \n+
    367 for (unsigned int j=0; j<dim; j++)
    \n+
    368 {
    \n+
    369 alpha[j] = i % (k+1);
    \n+
    370 i = i/(k+1);
    \n+
    371 }
    \n+
    372 return alpha;
    \n+
    373 }
    \n+
    374
    \n+
    376 void setup1d(std::vector<unsigned int>& subEntity)
    \n+
    377 {
    \n+
    378 assert(k>0);
    \n+
    379
    \n+
    380 unsigned lastIndex=0;
    \n+
    381
    \n+
    382 /* edge and vertex numbering
    \n+
    383 0----0----1
    \n+
    384 */
    \n+
    385
    \n+
    386 // edge (0)
    \n+
    387 subEntity[lastIndex++] = 0; // corner 0
    \n+
    388 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    389 subEntity[lastIndex++] = 0; // inner dofs of element (0)
    \n+
    390
    \n+
    391 subEntity[lastIndex++] = 1; // corner 1
    \n+
    392
    \n+
    393 assert(power(k+1,dim)==lastIndex);
    \n+
    394 }
    \n+
    395
    \n+
    396 void setup2d(std::vector<unsigned int>& subEntity)
    \n+
    397 {
    \n+
    398 assert(k>0);
    \n+
    399
    \n+
    400 unsigned lastIndex=0;
    \n+
    401
    \n+
    402 // LocalKey: entity number, entity codim, dof indices within each entity
    \n+
    403 /* edge and vertex numbering
    \n+
    404 2----3----3
    \n+
    405 | |
    \n+
    406 | |
    \n+
    407 0 1
    \n+
    408 | |
    \n+
    409 | |
    \n+
    410 0----2----1
    \n+
    411 */
    \n+
    412
    \n+
    413 // lower edge (2)
    \n+
    414 subEntity[lastIndex++] = 0; // corner 0
    \n+
    415 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    416 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)
    \n+
    417
    \n+
    418 subEntity[lastIndex++] = 1; // corner 1
    \n+
    419
    \n+
    420 // iterate from bottom to top over inner edge dofs
    \n+
    421 for (unsigned e = 0; e < k - 1; ++e) {
    \n+
    422 subEntity[lastIndex++] = 0; // left edge (0)
    \n+
    423 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    424 subEntity[lastIndex++] = 0; // face dofs
    \n+
    425 subEntity[lastIndex++] = 1; // right edge (1)
    \n+
    426 }
    \n+
    427
    \n+
    428 // upper edge (3)
    \n+
    429 subEntity[lastIndex++] = 2; // corner 2
    \n+
    430 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    431 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)
    \n+
    432
    \n+
    433 subEntity[lastIndex++] = 3; // corner 3
    \n+
    434
    \n+
    435 assert(power(k+1,dim)==lastIndex);
    \n+
    436 }
    \n+
    437
    \n+
    438 void setup3d(std::vector<unsigned int>& subEntity)
    \n+
    439 {
    \n+
    440 assert(k>0);
    \n+
    441
    \n+
    442 unsigned lastIndex=0;
    \n+
    443#ifndef NDEBUG
    \n+
    444 const unsigned numIndices = power(k+1,dim);
    \n+
    445 const unsigned numFaceIndices = power(k+1,dim-1);
    \n+
    446#endif
    \n+
    447 const unsigned numInnerEdgeDofs = k-1;
    \n+
    448
    \n+
    449 // LocalKey: entity number, entity codim, dof indices within each entity
    \n+
    450 /* edge and vertex numbering
    \n+
    451
    \n+
    452 6---(11)--7 6---------7
    \n+
    453 /| /| /| (5) /|
    \n+
    454 (8)| (9)| / | top / |
    \n+
    455 / (2) / (3) / |(3)bac/k |
    \n+
    456 4---(10)--5 | 4---------5 |
    \n+
    457 | | | | left|(0)| |(1)|right
    \n+
    458 | 2--(7)|---3 | 2-----|---3
    \n+
    459 (0) / (1) / |(2)front | /
    \n+
    460 |(4) |(5) | / (4) | /
    \n+
    461 |/ |/ |/ bottom |/
    \n+
    462 0---(6)---1 0---------1
    \n+
    463 */
    \n
    464
    \n-
    \n-
    465 Field operator/ ( const Field &other ) const
    \n-
    466 {
    \n-
    467 return Field() / other;
    \n-
    468 }
    \n-
    \n-
    469 };
    \n-
    \n-
    470
    \n+
    465 // bottom face (4)
    \n+
    466 lastIndex=0;
    \n+
    467 // lower edge (6)
    \n+
    468 subEntity[lastIndex++] = 0; // corner 0
    \n+
    469 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    470 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)
    \n
    471
    \n-
    472
    \n-
    473 template< int dim, class F >
    \n-
    \n-
    474 struct Zero< MultiIndex< dim,F > >
    \n-
    475 {
    \n-\n-
    477
    \n-
    478 // zero does not acutally exist
    \n-
    \n-
    479 operator Field ()
    \n-
    480 {
    \n-
    481 return Field(0);
    \n-
    482 }
    \n-
    \n-
    483 };
    \n-
    \n-
    484
    \n-
    485 template< int dim, class Field >
    \n-
    \n-\n-
    487 {
    \n-
    488 return true;
    \n-
    489 }
    \n-
    \n+
    472 subEntity[lastIndex++] = 1; // corner 1
    \n+
    473
    \n+
    474 // iterate from bottom to top over inner edge dofs
    \n+
    475 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n+
    476 subEntity[lastIndex++] = 4; // left edge (4)
    \n+
    477 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    478 subEntity[lastIndex++] = 4; // inner face dofs
    \n+
    479 subEntity[lastIndex++] = 5; // right edge (5)
    \n+
    480 }
    \n+
    481
    \n+
    482 // upper edge (7)
    \n+
    483 subEntity[lastIndex++] = 2; // corner 2
    \n+
    484 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    485 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)
    \n+
    486 subEntity[lastIndex++] = 3; // corner 3
    \n+
    487
    \n+
    488 assert(numFaceIndices==lastIndex); // added 1 face so far
    \n
    490
    \n-
    491 template< int dim, class Field >
    \n-
    \n-\n-
    493 {
    \n-
    494 return true;
    \n-
    495 }
    \n-
    \n-
    496
    \n-
    497}
    \n-
    498
    \n-
    499#endif // #ifndef DUNE_MULTIINDEX_HH
    \n-\n+
    492 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {
    \n+
    493
    \n+
    494 // lower edge (connecting edges 0 and 1)
    \n+
    495 subEntity[lastIndex++] = 0; // dof on edge 0
    \n+
    496 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    497 subEntity[lastIndex++] = 2; // dof in front face
    \n+
    498 subEntity[lastIndex++] = 1; // dof on edge 1
    \n+
    499
    \n+
    500 // iterate from bottom to top over inner edge dofs
    \n+
    501 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {
    \n+
    502 subEntity[lastIndex++] = 0; // on left face (0)
    \n+
    503 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    504 subEntity[lastIndex++] = 0; // volume dofs
    \n+
    505 subEntity[lastIndex++] = 1; // right face (1)
    \n+
    506 }
    \n+
    507
    \n+
    508 // upper edge (connecting edges 0 and 1)
    \n+
    509 subEntity[lastIndex++] = 2; // dof on edge 2
    \n+
    510 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)
    \n+
    511 subEntity[lastIndex++] = 3; // dof on rear face (3)
    \n+
    512 subEntity[lastIndex++] = 3; // dof on edge 3
    \n+
    513
    \n+
    514 assert(lastIndex==(f+1+1)*numFaceIndices);
    \n+
    515 }
    \n+
    516
    \n+
    518 // lower edge (10)
    \n+
    519 subEntity[lastIndex++] = 4; // corner 4
    \n+
    520 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    521 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)
    \n+
    522 subEntity[lastIndex++] = 5; // corner 5
    \n+
    523
    \n+
    524 // iterate from bottom to top over inner edge dofs
    \n+
    525 for (unsigned e = 0; e < k - 1; ++e) {
    \n+
    526 subEntity[lastIndex++] = 8; // left edge (8)
    \n+
    527 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    528 subEntity[lastIndex++] = 5; // face dofs
    \n+
    529 subEntity[lastIndex++] = 9; // right edge (9)
    \n+
    530 }
    \n+
    531
    \n+
    532 // upper edge (11)
    \n+
    533 subEntity[lastIndex++] = 6; // corner 6
    \n+
    534 for (unsigned i = 0; i < k - 1; ++i)
    \n+
    535 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)
    \n+
    536 subEntity[lastIndex++] = 7; // corner 7
    \n+
    537
    \n+
    538 assert(numIndices==lastIndex);
    \n+
    539 }
    \n+
    540
    \n+
    541 public:
    \n+
    543 LagrangeCubeLocalCoefficients ()
    \n+
    544 : localKeys_(size())
    \n+
    545 {
    \n+
    546 if (k==0)
    \n+
    547 {
    \n+
    548 localKeys_[0] = LocalKey(0,0,0);
    \n+
    549 return;
    \n+
    550 }
    \n+
    551
    \n+
    552 if (k==1)
    \n+
    553 {
    \n+
    554 for (std::size_t i=0; i<size(); i++)
    \n+
    555 localKeys_[i] = LocalKey(i,dim,0);
    \n+
    556 return;
    \n+
    557 }
    \n+
    558
    \n+
    559 // Now: the general case
    \n+
    560
    \n+
    561 // Set up array of codimension-per-dof-number
    \n+
    562 std::vector<unsigned int> codim(size());
    \n+
    563
    \n+
    564 for (std::size_t i=0; i<codim.size(); i++)
    \n+
    565 {
    \n+
    566 codim[i] = 0;
    \n+
    567
    \n+
    568 // Codimension gets increased by 1 for each coordinate direction
    \n+
    569 // where dof is on boundary
    \n+
    570 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n+
    571 for (unsigned int j=0; j<dim; j++)
    \n+
    572 if (mIdx[j]==0 or mIdx[j]==k)
    \n+
    573 codim[i]++;
    \n+
    574 }
    \n+
    575
    \n+
    576 // Set up index vector (the index of the dof in the set of dofs of a given subentity)
    \n+
    577 // Algorithm: the 'index' has the same ordering as the dof number 'i'.
    \n+
    578 // To make it consecutive we interpret 'i' in the (k+1)-adic system, omit all digits
    \n+
    579 // that correspond to axes where the dof is on the element boundary, and transform the
    \n+
    580 // rest to the (k-1)-adic system.
    \n+
    581 std::vector<unsigned int> index(size());
    \n+
    582
    \n+
    583 for (std::size_t i=0; i<size(); i++)
    \n+
    584 {
    \n+
    585 index[i] = 0;
    \n+
    586
    \n+
    587 std::array<unsigned int,dim> mIdx = multiindex(i);
    \n+
    588
    \n+
    589 for (int j=dim-1; j>=0; j--)
    \n+
    590 if (mIdx[j]>0 && mIdx[j]<k)
    \n+
    591 index[i] = (k-1)*index[i] + (mIdx[j]-1);
    \n+
    592 }
    \n+
    593
    \n+
    594 // Set up entity and dof numbers for each (supported) dimension separately
    \n+
    595 std::vector<unsigned int> subEntity(size());
    \n+
    596
    \n+
    597 if (dim==1) {
    \n+
    598
    \n+
    599 setup1d(subEntity);
    \n+
    600
    \n+
    601 } else if (dim==2) {
    \n+
    602
    \n+
    603 setup2d(subEntity);
    \n+
    604
    \n+
    605 } else if (dim==3) {
    \n+
    606
    \n+
    607 setup3d(subEntity);
    \n+
    608
    \n+
    609 } else
    \n+
    610 DUNE_THROW(Dune::NotImplemented, "LagrangeCubeLocalCoefficients for order " << k << " and dim == " << dim);
    \n+
    611
    \n+
    612 for (size_t i=0; i<size(); i++)
    \n+
    613 localKeys_[i] = LocalKey(subEntity[i], codim[i], index[i]);
    \n+
    614 }
    \n+
    615
    \n+
    617 static constexpr std::size_t size ()
    \n+
    618 {
    \n+
    619 return power(k+1,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
    \n+
    636 template<class LocalBasis>
    \n+
    637 class LagrangeCubeLocalInterpolation
    \n+
    638 {
    \n+
    639 public:
    \n+
    640
    \n+
    648 template<typename F, typename C>
    \n+
    649 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    650 {
    \n+
    651 constexpr auto dim = LocalBasis::Traits::dimDomain;
    \n+
    652 constexpr auto k = LocalBasis::order();
    \n+
    653 using D = typename LocalBasis::Traits::DomainFieldType;
    \n+
    654
    \n+
    655 typename LocalBasis::Traits::DomainType x;
    \n+
    656 auto&& f = Impl::makeFunctionWithCallOperator<typename LocalBasis::Traits::DomainType>(ff);
    \n+
    657
    \n+
    658 out.resize(LocalBasis::size());
    \n+
    659
    \n+
    660 // Specialization for zero-order case
    \n+
    661 if (k==0)
    \n+
    662 {
    \n+
    663 auto center = ReferenceElements<D,dim>::cube().position(0,0);
    \n+
    664 out[0] = f(center);
    \n+
    665 return;
    \n+
    666 }
    \n+
    667
    \n+
    668 // Specialization for first-order case
    \n+
    669 if (k==1)
    \n+
    670 {
    \n+
    671 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n+
    672 {
    \n+
    673 // Generate coordinate of the i-th corner of the reference cube
    \n+
    674 for (int j=0; j<dim; j++)
    \n+
    675 x[j] = (i & (1<<j)) ? 1.0 : 0.0;
    \n+
    676
    \n+
    677 out[i] = f(x);
    \n+
    678 }
    \n+
    679 return;
    \n+
    680 }
    \n+
    681
    \n+
    682 // The general case
    \n+
    683 for (unsigned int i=0; i<LocalBasis::size(); i++)
    \n+
    684 {
    \n+
    685 // convert index i to multiindex
    \n+
    686 std::array<unsigned int,dim> alpha(LocalBasis::multiindex(i));
    \n+
    687
    \n+
    688 // Generate coordinate of the i-th Lagrange point
    \n+
    689 for (unsigned int j=0; j<dim; j++)
    \n+
    690 x[j] = (1.0*alpha[j])/k;
    \n+
    691
    \n+
    692 out[i] = f(x);
    \n+
    693 }
    \n+
    694 }
    \n+
    695
    \n+
    696 };
    \n+
    697
    \n+
    698} } // namespace Dune::Impl
    \n+
    699
    \n+
    700namespace Dune
    \n+
    701{
    \n+
    709 template<class D, class R, int dim, int k>
    \n+
    \n+\n+
    711 {
    \n+
    712 public:
    \n+\n+
    716 Impl::LagrangeCubeLocalCoefficients<dim,k>,
    \n+
    717 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > >;
    \n+
    718
    \n+\n+
    725
    \n+
    \n+
    728 const typename Traits::LocalBasisType& localBasis () const
    \n+
    729 {
    \n+
    730 return basis_;
    \n+
    731 }
    \n+
    \n+
    732
    \n+
    \n+\n+
    736 {
    \n+
    737 return coefficients_;
    \n+
    738 }
    \n+
    \n+
    739
    \n+
    \n+\n+
    743 {
    \n+
    744 return interpolation_;
    \n+
    745 }
    \n+
    \n+
    746
    \n+
    \n+
    748 static constexpr std::size_t size ()
    \n+
    749 {
    \n+
    750 return power(k+1,dim);
    \n+
    751 }
    \n+
    \n+
    752
    \n+
    \n+
    755 static constexpr GeometryType type ()
    \n+
    756 {
    \n+
    757 return GeometryTypes::cube(dim);
    \n+
    758 }
    \n+
    \n+
    759
    \n+
    760 private:
    \n+
    761 Impl::LagrangeCubeLocalBasis<D,R,dim,k> basis_;
    \n+
    762 Impl::LagrangeCubeLocalCoefficients<dim,k> coefficients_;
    \n+
    763 Impl::LagrangeCubeLocalInterpolation<Impl::LagrangeCubeLocalBasis<D,R,dim,k> > interpolation_;
    \n+
    764 };
    \n+
    \n+
    765
    \n+
    766} // namespace Dune
    \n+
    767
    \n+
    768#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:152
    \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:37
    \n-
    This operator+(const This &other) const
    Definition multiindex.hh:248
    \n-
    int absOMZ() const
    Definition multiindex.hh:272
    \n-
    ~MultiIndex()
    Definition multiindex.hh:86
    \n-
    This & operator-=(const This &other)
    Definition multiindex.hh:207
    \n-
    MultiIndex(int, const This &other)
    Definition multiindex.hh:59
    \n-
    static const int dimension
    Definition multiindex.hh:43
    \n-
    int absZ() const
    Definition multiindex.hh:264
    \n-
    int omz(int i) const
    Definition multiindex.hh:95
    \n-
    This & operator+=(const This &other)
    Definition multiindex.hh:184
    \n-
    bool operator==(const This &other) const
    Definition multiindex.hh:140
    \n-
    bool sameMultiIndex(const This &ind)
    Definition multiindex.hh:280
    \n-
    This & operator=(const This &other)
    Definition multiindex.hh:104
    \n-
    MultiIndex(const This &other)
    Definition multiindex.hh:73
    \n-
    This & operator*=(const F &f)
    Definition multiindex.hh:147
    \n-
    const Field & factor() const
    Definition multiindex.hh:99
    \n-
    This operator/(const F &f) const
    Definition multiindex.hh:231
    \n-
    MultiIndex(const F &f)
    Definition multiindex.hh:52
    \n-
    This & operator/=(const F &f)
    Definition multiindex.hh:155
    \n-
    This operator*(const F &f) const
    Definition multiindex.hh:225
    \n-
    void set(int d, int power=1)
    Definition multiindex.hh:259
    \n-
    This operator-(const This &other) const
    Definition multiindex.hh:253
    \n-
    int z(int i) const
    Definition multiindex.hh:91
    \n-
    MultiIndex()
    Definition multiindex.hh:45
    \n-
    MultiIndex< dim, F > Field
    Definition multiindex.hh:453
    \n-
    MultiIndex< dim, F > Field
    Definition multiindex.hh:476
    \n+
    D DomainType
    domain type
    Definition common/localbasis.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+
    Lagrange finite element for cubes with arbitrary compile-time dimension and polynomial order.
    Definition lagrangecube.hh:711
    \n+
    const Traits::LocalBasisType & localBasis() const
    Returns the local basis, i.e., the set of shape functions.
    Definition lagrangecube.hh:728
    \n+
    LagrangeCubeLocalFiniteElement()
    Default constructor.
    Definition lagrangecube.hh:724
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Returns object that evaluates degrees of freedom.
    Definition lagrangecube.hh:742
    \n+
    static constexpr GeometryType type()
    The reference element that the local finite element is defined on.
    Definition lagrangecube.hh:755
    \n+
    static constexpr std::size_t size()
    The number of shape functions.
    Definition lagrangecube.hh:748
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Returns the assignment of the degrees of freedom to the element subentities.
    Definition lagrangecube.hh:735
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,621 +1,774 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 (C) 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-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+11#include \n+12#include \n+13#include \n 14\n-15namespace _\bD_\bu_\bn_\be\n-16{\n-17 /****************************************************************\n-18 * Provide a Field class which can be used in evaluation methods\n-19 * to produce MultiIndex presentation of polynomials.\n-20 ****************************************************************/\n-21 // Internal Forward Declarations\n-22 // -----------------------------\n-23\n-24 template< int dim, class Field >\n-25 class MultiIndex;\n-26\n-27 template< int dim, class Field >\n-_\b2_\b8 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-29\n-30\n-31\n-32 // MultiIndex\n-33 // ----------\n-34\n-35 template< int dim,class Field >\n-_\b3_\b6 class _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx\n-37 {\n-38 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-39\n-_\b4_\b0 friend std::ostream &operator<<<> ( std::ostream &, const _\bT_\bh_\bi_\bs & );\n-41\n-42 public:\n-_\b4_\b3 static const int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = dim;\n-44\n-_\b4_\b5 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ()\n-46 : vecZ_( 0 ),\n-47 vecOMZ_( 0 ),\n-48 factor_( 1. ),\n-49 next_( 0 )\n-50 {}\n-51 template \n-_\b5_\b2 explicit _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx (const F &f)\n-53 : vecZ_( 0 ),\n-54 vecOMZ_( 0 ),\n-55 factor_( _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(f) ),\n-56 next_( 0 )\n-57 {}\n-58\n-_\b5_\b9 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( int, const _\bT_\bh_\bi_\bs &other )\n-60 : vecZ_( other.vecOMZ_ ),\n-61 vecOMZ_( other.vecZ_ ),\n-62 factor_( other.factor_ )\n-63 {\n-64 assert(!other.next_);\n-65 if (other.next_)\n-66 {\n-67 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n-68 }\n-69 else\n-70 next_ = 0;\n-71 }\n-72\n-_\b7_\b3 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx ( const _\bT_\bh_\bi_\bs &other )\n-74 : vecZ_( other.vecZ_ ),\n-75 vecOMZ_( other.vecOMZ_ ),\n-76 factor_( other.factor_ )\n-77 {\n-78 if (other.next_)\n-79 {\n-80 next_ = new _\bT_\bh_\bi_\bs( *(other.next_) );\n-81 }\n-82 else\n-83 next_ = 0;\n-84 }\n-85\n-_\b8_\b6 _\b~_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx()\n-87 {\n-88 remove();\n-89 }\n-90\n-_\b9_\b1 int _\bz(int i) const\n-92 {\n-93 return vecZ_[i];\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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+24 // Forward declaration\n+25 template\n+26 class LagrangeCubeLocalInterpolation;\n+27\n+38 template\n+39 class LagrangeCubeLocalBasis\n+40 {\n+41 friend class\n+LagrangeCubeLocalInterpolation >;\n+42\n+43 // i-th Lagrange polynomial of degree k in one dimension\n+44 static R p(unsigned int i, D x)\n+45 {\n+46 R result(1.0);\n+47 for (unsigned int j=0; j<=k; j++)\n+48 if (j!=i) result *= (k*x-j)/((int)i-(int)j);\n+49 return result;\n+50 }\n+51\n+52 // derivative of ith Lagrange polynomial of degree k in one dimension\n+53 static R dp(unsigned int i, D x)\n+54 {\n+55 R result(0.0);\n+56\n+57 for (unsigned int j=0; j<=k; j++)\n+58 {\n+59 if (j!=i)\n+60 {\n+61 R prod( (k*1.0)/((int)i-(int)j) );\n+62 for (unsigned int l=0; l<=k; l++)\n+63 if (l!=i && l!=j)\n+64 prod *= (k*x-l)/((int)i-(int)l);\n+65 result += prod;\n+66 }\n+67 }\n+68 return result;\n+69 }\n+70\n+71 // Second derivative of j-th Lagrange polynomial of degree k in one\n+dimension\n+72 // Formula and notation taken from https://en.wikipedia.org/wiki/\n+Lagrange_polynomial#Derivatives\n+73 static R ddp(unsigned int j, D x)\n+74 {\n+75 R result(0.0);\n+76\n+77 for (unsigned int i=0; i<=k; i++)\n+78 {\n+79 if (i==j)\n+80 continue;\n+81\n+82 R sum(0);\n+83\n+84 for (unsigned int m=0; m<=k; m++)\n+85 {\n+86 if (m==i || m==j)\n+87 continue;\n+88\n+89 R prod( (k*1.0)/((int)j-(int)m) );\n+90 for (unsigned int l=0; l<=k; l++)\n+91 if (l!=i && l!=j && l!=m)\n+92 prod *= (k*x-l)/((int)j-(int)l);\n+93 sum += prod;\n 94 }\n-_\b9_\b5 int _\bo_\bm_\bz(int i) const\n-96 {\n-97 return vecOMZ_[i];\n-98 }\n-_\b9_\b9 const Field &_\bf_\ba_\bc_\bt_\bo_\br() const\n-100 {\n-101 return factor_;\n-102 }\n-103\n-_\b1_\b0_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n-105 {\n-106 remove();\n-107 vecZ_ = other.vecZ_;\n-108 vecOMZ_ = other.vecOMZ_;\n-109 factor_ = other.factor_;\n-110 if (other.next_)\n-111 next_ = new _\bT_\bh_\bi_\bs(*(other.next_));\n-112 return *this;\n-113 }\n-_\b1_\b1_\b4 _\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-115 {\n-116 remove();\n-117 vecZ_ = 0;\n-118 vecOMZ_ = 0;\n-119 factor_ = 0.;\n-120 return *this;\n-121 }\n-_\b1_\b2_\b2 _\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-123 {\n-124 remove();\n-125 vecZ_ = 0;\n-126 vecOMZ_ = 0;\n-127 factor_ = 1.;\n-128 return *this;\n-129 }\n-130 template \n-_\b1_\b3_\b1 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b ( const F &f )\n+95\n+96 result += sum * ( (k*1.0)/((int)j-(int)i) );\n+97 }\n+98\n+99 return result;\n+100 }\n+101\n+102 // Return i as a d-digit number in the (k+1)-nary system\n+103 static std::array multiindex (unsigned int i)\n+104 {\n+105 std::array alpha;\n+106 for (unsigned int j=0; j,R,1,FieldVector,FieldMatrix\n+>;\n+116\n+119 static constexpr unsigned int size ()\n+120 {\n+121 return power(k+1, dim);\n+122 }\n+123\n+125 void evaluateFunction(const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& x,\n+126 std::vector& out) const\n+127 {\n+128 out.resize(size());\n+129\n+130 // Specialization for zero-order case\n+131 if (k==0)\n 132 {\n-133 remove();\n-134 vecZ_ = 0;\n-135 vecOMZ_ = 0;\n-136 factor_ = field_cast(f);\n-137 return *this;\n-138 }\n-139\n-_\b1_\b4_\b0 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=_\b (const _\bT_\bh_\bi_\bs &other) const\n-141 {\n-142 assert(!next_ && !other.next_);\n-143 return (vecZ_==other.vecZ_ && vecOMZ_==other.vecOMZ_ &&\n-factor_==other.factor_);\n-144 }\n-145\n-146 template \n-_\b1_\b4_\b7 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const F &f )\n-148 {\n-149 factor_ *= field_cast(f);\n-150 if (next_)\n-151 (*next_) *= f;\n-152 return *this;\n-153 }\n-154 template \n-_\b1_\b5_\b5 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=_\b ( const F &f )\n-156 {\n-157 factor_ /= field_cast(f);\n-158 if (next_)\n-159 (*next_) /= f;\n-160 return *this;\n-161 }\n-162\n-_\b1_\b6_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n-164 {\n-165 assert(!other.next_);\n-166 vecZ_ += other.vecZ_;\n-167 vecOMZ_ += other.vecOMZ_;\n-168 factor_ *= other.factor_;\n-169 if (next_)\n-170 (*next_) *= other;\n-171 return *this;\n-172 }\n-_\b1_\b7_\b3 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n-174 {\n-175 assert(!other.next_);\n-176 vecZ_ -= other.vecZ_;\n-177 vecOMZ_ -= other.vecOMZ_;\n-178 factor_ /= other.factor_;\n-179 if (next_)\n-180 (*next_) /= other;\n-181 return *this;\n-182 }\n-183\n-_\b1_\b8_\b4 _\bT_\bh_\bi_\bs &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b=_\b ( const _\bT_\bh_\bi_\bs &other )\n-185 {\n-186 assert(!other.next_);\n-187 if (std::abs(other.factor_)<1e-10)\n-188 return *this;\n-189 if (std::abs(factor_)<1e-10)\n+133 out[0] = 1;\n+134 return;\n+135 }\n+136\n+137 if (k==1)\n+138 {\n+139 for (size_t i=0; i alpha(multiindex(i));\n+155\n+156 // initialize product\n+157 out[i] = 1.0;\n+158\n+159 // dimension by dimension\n+160 for (unsigned int j=0; j& out) const\n+172 {\n+173 out.resize(size());\n+174\n+175 // Specialization for k==0\n+176 if (k==0)\n+177 {\n+178 std::fill(out[0][0].begin(), out[0][0].end(), 0);\n+179 return;\n+180 }\n+181\n+182 // Specialization for k==1\n+183 if (k==1)\n+184 {\n+185 // Loop over all shape functions\n+186 for (size_t i=0; i\n-_\b2_\b2_\b5 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const F &f ) const\n-226 {\n-227 _\bT_\bh_\bi_\bs _\bz = *this;\n-228 return (_\bz *= f);\n-229 }\n-230 template \n-_\b2_\b3_\b1 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const F &f ) const\n-232 {\n-233 _\bT_\bh_\bi_\bs _\bz = *this;\n-234 return (_\bz /= f);\n-235 }\n-236\n-_\b2_\b3_\b7 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b*_\b ( const _\bT_\bh_\bi_\bs &other ) const\n+203 return;\n+204 }\n+205\n+206 // The general case\n+207\n+208 // Loop over all shape functions\n+209 for (size_t i=0; i alpha(multiindex(i));\n+213\n+214 // Loop over all coordinate directions\n+215 for (unsigned int j=0; j& order,\n+236 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 _\bT_\bh_\bi_\bs _\bz = *this;\n-240 return (_\bz *= other);\n-241 }\n-_\b2_\b4_\b2 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bT_\bh_\bi_\bs &other ) const\n-243 {\n-244 _\bT_\bh_\bi_\bs _\bz = *this;\n-245 return (_\bz /= other);\n-246 }\n-247\n-_\b2_\b4_\b8 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b+_\b ( const _\bT_\bh_\bi_\bs &other ) const\n-249 {\n-250 _\bT_\bh_\bi_\bs _\bz = *this;\n-251 return (_\bz += other);\n-252 }\n-_\b2_\b5_\b3 _\bT_\bh_\bi_\bs _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bT_\bh_\bi_\bs &other ) const\n-254 {\n-255 _\bT_\bh_\bi_\bs _\bz = *this;\n-256 return (_\bz -= other);\n-257 }\n+239 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+240\n+241 out.resize(size());\n+242\n+243 if (k==0)\n+244 {\n+245 out[0] = (totalOrder==0);\n+246 return;\n+247 }\n+248\n+249 if (k==1)\n+250 {\n+251 if (totalOrder == 0)\n+252 {\n+253 evaluateFunction(in, out);\n+254 }\n+255 else if (totalOrder == 1)\n+256 {\n+257 out.resize(size());\n 258\n-_\b2_\b5_\b9 void _\bs_\be_\bt ( int d, int power = 1 )\n-260 {\n-261 vecZ_[ d ] = power;\n-262 }\n-263\n-_\b2_\b6_\b4 int _\ba_\bb_\bs_\bZ () const\n+259 auto direction = std::distance(order.begin(), std::find(order.begin(),\n+order.end(), 1));\n+260 if (direction >= dim)\n+261 DUNE_THROW(RangeError, \"Direction of partial derivative not found!\");\n+262\n+263 // Loop over all shape functions\n+264 for (std::size_t i = 0; i < size(); ++i)\n 265 {\n-266 int ret = 0;\n-267 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-268 ret += std::abs( vecZ_[ i ] );\n-269 return ret;\n-270 }\n-271\n-_\b2_\b7_\b2 int _\ba_\bb_\bs_\bO_\bM_\bZ() const\n-273 {\n-274 int ret = 0;\n-275 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-276 ret += std::abs( vecOMZ_[ i ] );\n-277 return ret;\n-278 }\n-279\n-_\b2_\b8_\b0 bool _\bs_\ba_\bm_\be_\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx(const _\bT_\bh_\bi_\bs &ind)\n-281 {\n-282 for( int i = 0; i < _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn; ++i )\n-283 {\n-284 if ( vecZ_[i] != ind.vecZ_[i] ||\n-285 vecOMZ_[i] != vecOMZ_[i] )\n-286 return false;\n-287 }\n-288 return true;\n-289 }\n-290\n-291 private:\n-292 void remove()\n+266 // Initialize: the overall expression is a product\n+267 // if j-th bit of i is set to 1, otherwise to -1\n+268 out[i] = (i & (1< alpha(multiindex(i));\n+285\n+286 // Initialize: the overall expression is a product\n+287 out[i][0] = 1.0;\n+288\n+289 // rest of the product\n+290 for (std::size_t l=0; lremove();\n-297 delete next_;\n-298 next_ = 0;\n-299 }\n-300 }\n-301\n-302 typedef Dune::FieldVector< int, dimension > Vector;\n-303\n-304 Vector vecZ_;\n-305 Vector vecOMZ_;\n-306 Field factor_;\n-307\n-308 This *next_;\n-309 };\n-310\n-311 template \n-_\b3_\b1_\b2 _\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-313 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n-314 {\n-315 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> z = m;\n-316 return (z *= f);\n-317 }\n-318 template \n-_\b3_\b1_\b9 _\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-320 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> &m)\n-321 {\n-322 _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\bi_\bm_\b,_\bF_\bi_\be_\bl_\bd_\b> z = m;\n-323 return (z /= f);\n-324 }\n-325\n-326 template \n-_\b3_\b2_\b7 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-328 for (unsigned int r=0; r\n-_\b3_\b3_\b8 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n-339 const std::vector,dimR> >& y) {\n-340 out << \"\\\\begin{eqnarray*}\" << std::endl;\n-341 for (unsigned int k=0; k\n-_\b3_\b5_\b6 std::ostream &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b<(std::ostream& out,\n-357 const std::vector,dimR1,dimR2> >& y) {\n-358 out << \"\\\\begin{eqnarray*}\" << std::endl;\n-359 for (unsigned int k=0; k1\n+317\n+318 // Loop over all shape functions\n+319 for (size_t i=0; i alpha(multiindex(i));\n+323\n+324 // Initialize: the overall expression is a product\n+325 out[i][0] = 1.0;\n+326\n+327 // rest of the product\n+328 for (std::size_t l=0; l\n+361 class LagrangeCubeLocalCoefficients\n+362 {\n+363 // Return i as a d-digit number in the (k+1)-nary system\n+364 static std::array multiindex (unsigned int i)\n+365 {\n+366 std::array alpha;\n+367 for (unsigned int j=0; j\n-_\b3_\b7_\b6 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+372 return alpha;\n+373 }\n+374\n+376 void setup1d(std::vector& subEntity)\n 377 {\n-378 bool first = true;\n-379 const _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx_\b<_\bd_\b,_\bF_\b> *m = &val;\n-380 do {\n-381 if (m->_\ba_\bb_\bs_\bZ()==0 && std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br())<1e-10)\n-382 {\n-383 if (!m->next_ || !first)\n-384 {\n-385 out << \"0\";\n-386 break;\n-387 }\n-388 else {\n-389 m = m->next_;\n-390 continue;\n-391 }\n-392 }\n-393 if (m->_\bf_\ba_\bc_\bt_\bo_\br()>0 && !first)\n-394 out << \" + \";\n-395 else if (m->_\bf_\ba_\bc_\bt_\bo_\br()<0)\n-396 if (!first)\n-397 out << \" - \";\n-398 else\n-399 out << \"- \";\n-400 else\n-401 out << \" \";\n-402 first = false;\n-403 F f = std::abs(m->_\bf_\ba_\bc_\bt_\bo_\br());\n-404 if (m->_\ba_\bb_\bs_\bZ()==0)\n-405 out << f;\n-406 else {\n-407 if ( std::abs(f)<1e-10)\n-408 out << 0;\n-409 else\n-410 {\n-411 F f_1(f);\n-412 f_1 -= 1.; // better Unity();\n-413 if ( std::abs(f_1)>1e-10)\n-414 out << f;\n-415 int absVal = 0;\n-416 for (int i=0; ivecZ_[i]==0)\n-418 continue;\n-419 else if (m->vecZ_[i]==1)\n-420 out << char('a'+i);\n-421 else if (m->vecZ_[i]>0)\n-422 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n-423 else if (m->vecZ_[i]<0)\n-424 out << char('a'+i) << \"^\" << m->vecZ_[i] << \"\";\n-425 absVal += m->vecZ_[i];\n-426 if (absValabsZ()) out << \"\";\n-427 }\n-428 }\n-429 }\n-430 /*\n-431 if (mi.absOMZ()>0) {\n-432 for (int i=0;i<=mi.absZ();++i) {\n-433 if (mi.vecOMZ_[i]==0)\n-434 continue;\n-435 else if (mi.vecOMZ_[i]==1)\n-436 out << (1-char('a'+i));\n-437 else if (mi.vecOMZ_[i]>0)\n-438 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n-439 else if (mi.vecOMZ_[i]<0)\n-440 out << (1-char('a'+i)) << \"^\" << mi.vecOMZ_[i];\n-441 if (i==mi.absZ()+1) out << \"*\";\n-442 }\n-443 }\n-444 */\n-445 m = m->next_;\n-446 } while (m);\n-447 return out;\n-448 }\n-449\n-450 template< int dim, class F>\n-_\b4_\b5_\b1 struct _\bU_\bn_\bi_\bt_\by< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim, F > >\n-452 {\n-_\b4_\b5_\b3 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-454\n-_\b4_\b5_\b5 operator _\bF_\bi_\be_\bl_\bd () const\n-456 {\n-457 return _\bF_\bi_\be_\bl_\bd();\n-458 }\n-459\n-_\b4_\b6_\b0 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b-_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n-461 {\n-462 return _\bF_\bi_\be_\bl_\bd( 1, other );\n-463 }\n+378 assert(k>0);\n+379\n+380 unsigned lastIndex=0;\n+381\n+382 /* edge and vertex numbering\n+383 0----0----1\n+384 */\n+385\n+386 // edge (0)\n+387 subEntity[lastIndex++] = 0; // corner 0\n+388 for (unsigned i = 0; i < k - 1; ++i)\n+389 subEntity[lastIndex++] = 0; // inner dofs of element (0)\n+390\n+391 subEntity[lastIndex++] = 1; // corner 1\n+392\n+393 assert(power(k+1,dim)==lastIndex);\n+394 }\n+395\n+396 void setup2d(std::vector& subEntity)\n+397 {\n+398 assert(k>0);\n+399\n+400 unsigned lastIndex=0;\n+401\n+402 // LocalKey: entity number, entity codim, dof indices within each entity\n+403 /* edge and vertex numbering\n+404 2----3----3\n+405 | |\n+406 | |\n+407 0 1\n+408 | |\n+409 | |\n+410 0----2----1\n+411 */\n+412\n+413 // lower edge (2)\n+414 subEntity[lastIndex++] = 0; // corner 0\n+415 for (unsigned i = 0; i < k - 1; ++i)\n+416 subEntity[lastIndex++] = 2; // inner dofs of lower edge (2)\n+417\n+418 subEntity[lastIndex++] = 1; // corner 1\n+419\n+420 // iterate from bottom to top over inner edge dofs\n+421 for (unsigned e = 0; e < k - 1; ++e) {\n+422 subEntity[lastIndex++] = 0; // left edge (0)\n+423 for (unsigned i = 0; i < k - 1; ++i)\n+424 subEntity[lastIndex++] = 0; // face dofs\n+425 subEntity[lastIndex++] = 1; // right edge (1)\n+426 }\n+427\n+428 // upper edge (3)\n+429 subEntity[lastIndex++] = 2; // corner 2\n+430 for (unsigned i = 0; i < k - 1; ++i)\n+431 subEntity[lastIndex++] = 3; // inner dofs of upper edge (3)\n+432\n+433 subEntity[lastIndex++] = 3; // corner 3\n+434\n+435 assert(power(k+1,dim)==lastIndex);\n+436 }\n+437\n+438 void setup3d(std::vector& subEntity)\n+439 {\n+440 assert(k>0);\n+441\n+442 unsigned lastIndex=0;\n+443#ifndef NDEBUG\n+444 const unsigned numIndices = power(k+1,dim);\n+445 const unsigned numFaceIndices = power(k+1,dim-1);\n+446#endif\n+447 const unsigned numInnerEdgeDofs = k-1;\n+448\n+449 // LocalKey: entity number, entity codim, dof indices within each entity\n+450 /* edge and vertex numbering\n+451\n+452 6---(11)--7 6---------7\n+453 /| /| /| (5) /|\n+454 (8)| (9)| / | top / |\n+455 / (2) / (3) / |(3)bac/k |\n+456 4---(10)--5 | 4---------5 |\n+457 | | | | left|(0)| |(1)|right\n+458 | 2--(7)|---3 | 2-----|---3\n+459 (0) / (1) / |(2)front | /\n+460 |(4) |(5) | / (4) | /\n+461 |/ |/ |/ bottom |/\n+462 0---(6)---1 0---------1\n+463 */\n 464\n-_\b4_\b6_\b5 _\bF_\bi_\be_\bl_\bd _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b/_\b ( const _\bF_\bi_\be_\bl_\bd &other ) const\n-466 {\n-467 return _\bF_\bi_\be_\bl_\bd() / other;\n-468 }\n-469 };\n-470\n+465 // bottom face (4)\n+466 lastIndex=0;\n+467 // lower edge (6)\n+468 subEntity[lastIndex++] = 0; // corner 0\n+469 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+470 subEntity[lastIndex++] = 6; // inner dofs of lower edge (6)\n 471\n-472\n-473 template< int dim, class F >\n-_\b4_\b7_\b4 struct _\bZ_\be_\br_\bo< _\bM_\bu_\bl_\bt_\bi_\bI_\bn_\bd_\be_\bx< dim,F > >\n-475 {\n-_\b4_\b7_\b6 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-477\n-478 // zero does not acutally exist\n-_\b4_\b7_\b9 operator _\bF_\bi_\be_\bl_\bd ()\n-480 {\n-481 return _\bF_\bi_\be_\bl_\bd(0);\n-482 }\n-483 };\n-484\n-485 template< int dim, class Field >\n-_\b4_\b8_\b6 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-487 {\n-488 return true;\n-489 }\n+472 subEntity[lastIndex++] = 1; // corner 1\n+473\n+474 // iterate from bottom to top over inner edge dofs\n+475 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n+476 subEntity[lastIndex++] = 4; // left edge (4)\n+477 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+478 subEntity[lastIndex++] = 4; // inner face dofs\n+479 subEntity[lastIndex++] = 5; // right edge (5)\n+480 }\n+481\n+482 // upper edge (7)\n+483 subEntity[lastIndex++] = 2; // corner 2\n+484 for (unsigned i = 0; i < k - 1; ++i)\n+485 subEntity[lastIndex++] = 7; // inner dofs of upper edge (7)\n+486 subEntity[lastIndex++] = 3; // corner 3\n+487\n+488 assert(numFaceIndices==lastIndex); // added 1 face so far\n 490\n-491 template< int dim, class Field >\n-_\b4_\b9_\b2 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-493 {\n-494 return true;\n-495 }\n-496\n-497}\n-498\n-499#endif // #ifndef DUNE_MULTIINDEX_HH\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+492 for(unsigned f = 0; f < numInnerEdgeDofs; ++f) {\n+493\n+494 // lower edge (connecting edges 0 and 1)\n+495 subEntity[lastIndex++] = 0; // dof on edge 0\n+496 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+497 subEntity[lastIndex++] = 2; // dof in front face\n+498 subEntity[lastIndex++] = 1; // dof on edge 1\n+499\n+500 // iterate from bottom to top over inner edge dofs\n+501 for (unsigned e = 0; e < numInnerEdgeDofs; ++e) {\n+502 subEntity[lastIndex++] = 0; // on left face (0)\n+503 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+504 subEntity[lastIndex++] = 0; // volume dofs\n+505 subEntity[lastIndex++] = 1; // right face (1)\n+506 }\n+507\n+508 // upper edge (connecting edges 0 and 1)\n+509 subEntity[lastIndex++] = 2; // dof on edge 2\n+510 for (unsigned i = 0; i < numInnerEdgeDofs; ++i)\n+511 subEntity[lastIndex++] = 3; // dof on rear face (3)\n+512 subEntity[lastIndex++] = 3; // dof on edge 3\n+513\n+514 assert(lastIndex==(f+1+1)*numFaceIndices);\n+515 }\n+516\n+518 // lower edge (10)\n+519 subEntity[lastIndex++] = 4; // corner 4\n+520 for (unsigned i = 0; i < k - 1; ++i)\n+521 subEntity[lastIndex++] = 10; // inner dofs on lower edge (10)\n+522 subEntity[lastIndex++] = 5; // corner 5\n+523\n+524 // iterate from bottom to top over inner edge dofs\n+525 for (unsigned e = 0; e < k - 1; ++e) {\n+526 subEntity[lastIndex++] = 8; // left edge (8)\n+527 for (unsigned i = 0; i < k - 1; ++i)\n+528 subEntity[lastIndex++] = 5; // face dofs\n+529 subEntity[lastIndex++] = 9; // right edge (9)\n+530 }\n+531\n+532 // upper edge (11)\n+533 subEntity[lastIndex++] = 6; // corner 6\n+534 for (unsigned i = 0; i < k - 1; ++i)\n+535 subEntity[lastIndex++] = 11; // inner dofs of upper edge (11)\n+536 subEntity[lastIndex++] = 7; // corner 7\n+537\n+538 assert(numIndices==lastIndex);\n+539 }\n+540\n+541 public:\n+543 LagrangeCubeLocalCoefficients ()\n+544 : localKeys_(size())\n+545 {\n+546 if (k==0)\n+547 {\n+548 localKeys_[0] = LocalKey(0,0,0);\n+549 return;\n+550 }\n+551\n+552 if (k==1)\n+553 {\n+554 for (std::size_t i=0; i codim(size());\n+563\n+564 for (std::size_t i=0; i mIdx = multiindex(i);\n+571 for (unsigned int j=0; j index(size());\n+582\n+583 for (std::size_t i=0; i mIdx = multiindex(i);\n+588\n+589 for (int j=dim-1; j>=0; j--)\n+590 if (mIdx[j]>0 && mIdx[j] subEntity(size());\n+596\n+597 if (dim==1) {\n+598\n+599 setup1d(subEntity);\n+600\n+601 } else if (dim==2) {\n+602\n+603 setup2d(subEntity);\n+604\n+605 } else if (dim==3) {\n+606\n+607 setup3d(subEntity);\n+608\n+609 } else\n+610 DUNE_THROW(Dune::NotImplemented, \"LagrangeCubeLocalCoefficients for order \"\n+<< k << \" and dim == \" << dim);\n+611\n+612 for (size_t i=0; i localKeys_;\n+630 };\n+631\n+636 template\n+637 class LagrangeCubeLocalInterpolation\n+638 {\n+639 public:\n+640\n+648 template\n+649 void interpolate (const F& ff, std::vector& out) const\n+650 {\n+651 constexpr auto dim = LocalBasis::Traits::dimDomain;\n+652 constexpr auto k = LocalBasis::order();\n+653 using D = typename LocalBasis::Traits::DomainFieldType;\n+654\n+655 typename LocalBasis::Traits::DomainType x;\n+656 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+657\n+658 out.resize(LocalBasis::size());\n+659\n+660 // Specialization for zero-order case\n+661 if (k==0)\n+662 {\n+663 auto center = ReferenceElements::cube().position(0,0);\n+664 out[0] = f(center);\n+665 return;\n+666 }\n+667\n+668 // Specialization for first-order case\n+669 if (k==1)\n+670 {\n+671 for (unsigned int i=0; i alpha(LocalBasis::multiindex(i));\n+687\n+688 // Generate coordinate of the i-th Lagrange point\n+689 for (unsigned int j=0; j\n+_\b7_\b1_\b0 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+711 {\n+712 public:\n+_\b7_\b1_\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+_\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+716 Impl::LagrangeCubeLocalCoefficients,\n+717 Impl::LagrangeCubeLocalInterpolation > >;\n+718\n+_\b7_\b2_\b4 _\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+725\n+_\b7_\b2_\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+729 {\n+730 return basis_;\n+731 }\n+732\n+_\b7_\b3_\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+736 {\n+737 return coefficients_;\n+738 }\n+739\n+_\b7_\b4_\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+743 {\n+744 return interpolation_;\n+745 }\n+746\n+_\b7_\b4_\b8 static constexpr std::size_t _\bs_\bi_\bz_\be ()\n+749 {\n+750 return power(k+1,dim);\n+751 }\n+752\n+_\b7_\b5_\b5 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+756 {\n+757 return GeometryTypes::cube(dim);\n+758 }\n+759\n+760 private:\n+761 Impl::LagrangeCubeLocalBasis basis_;\n+762 Impl::LagrangeCubeLocalCoefficients coefficients_;\n+763 Impl::LagrangeCubeLocalInterpolation > interpolation_;\n+764 };\n+765\n+766} // namespace Dune\n+767\n+768#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:152\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:37\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:248\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:272\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:86\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:207\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:59\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:43\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:264\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:95\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:184\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:140\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:280\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:104\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:73\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:147\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:99\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:231\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:52\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:155\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:225\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:259\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:253\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:91\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:45\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:453\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:476\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: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:_\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:711\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:728\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_\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+LagrangeCubeLocalFiniteElement()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrangecube.hh:724\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:742\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:755\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:748\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:735\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 ===============================================================================\n 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: defaultbasisfactory.hh File Reference\n+dune-localfunctions: lagrangesimplex.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    defaultbasisfactory.hh File Reference
    \n+
    lagrangesimplex.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/localfunctions/utility/basismatrix.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/localinterpolation.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

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

    struct  Dune::MonomialEvaluator< B >
    struct  Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, d, k >
     Factory that only creates dimension specific local finite elements. More...
     
    struct  Dune::MonomialEvaluator< B >::Iterator< deriv >
    struct  Dune::DimSpecificPQkLocalFiniteElementFactory< D, R, 3, k >
     Factory that only creates dimension specific local finite elements. More...
     
    struct  Dune::MonomialEvaluator< B >::BaseIterator< Deriv >
    struct  Dune::PQkLocalFiniteElementFactory< D, R, dim, k >
     Factory to create any kind of Pk/Qk like element wrapped for the virtual interface. More...
     
    struct  Dune::StandardEvaluator< B >
     
    struct  Dune::StandardEvaluator< B >::Iterator< deriv >
    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,34 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-basisevaluator.hh File Reference\n-#include \n-#include \n-#include \n-#include \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/_\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/_\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-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+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 \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/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: basisevaluator.hh Source File\n+dune-localfunctions: pqkfactory.hh Source File\n \n \n \n \n \n \n \n@@ -70,279 +70,215 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    basisevaluator.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 (C) 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_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <map>
    \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-
    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-
    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+
    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+
    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+
    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+\n+
    112 {
    \n+
    113 protected:
    \n+\n+\n+
    116 typedef typename std::map<GeometryType,FE*> FEMap;
    \n+
    117
    \n+
    118 public:
    \n+\n+
    121
    \n+\n+
    124
    \n+
    \n+\n+
    127 {
    \n+
    128 typename FEMap::iterator it = other.cache_.begin();
    \n+
    129 typename FEMap::iterator end = other.cache_.end();
    \n+
    130 for(; it!=end; ++it)
    \n+
    131 cache_[it->first] = (it->second)->clone();
    \n+
    132 }
    \n+
    \n+
    133
    \n+
    \n+\n+
    135 {
    \n+
    136 typename FEMap::iterator it = cache_.begin();
    \n+
    137 typename FEMap::iterator end = cache_.end();
    \n+
    138 for(; it!=end; ++it)
    \n+
    139 delete it->second;
    \n+
    140 }
    \n+
    \n+
    141
    \n+
    \n+
    143 const FiniteElementType& get(const GeometryType& gt) const
    \n+
    144 {
    \n+
    145 typename FEMap::const_iterator it = cache_.find(gt);
    \n+
    146 if (it==cache_.end())
    \n+
    147 {
    \n+\n+
    149 if (fe==0)
    \n+
    150 DUNE_THROW(Dune::NotImplemented,"No Pk/Qk like local finite element available for geometry type " << gt << " and order " << k);
    \n+
    151
    \n+
    152 cache_[gt] = fe;
    \n+
    153 return *fe;
    \n+
    154 }
    \n+
    155 return *(it->second);
    \n+
    156 }
    \n+
    \n+
    157
    \n+
    158 protected:
    \n+
    159 mutable FEMap cache_;
    \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+
    161 };
    \n+
    \n+
    162
    \n+
    163}
    \n+
    164
    \n+
    165#endif
    \n+\n+\n+\n+\n+\n+\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:168
    \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:172
    \n+
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:286
    \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:711
    \n+
    Lagrange finite element for 3d prisms with arbitrary compile-time polynomial order.
    Definition lagrangeprism.hh:652
    \n+
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:812
    \n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \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:112
    \n+
    P0LocalFiniteElement< D, R, dim >::Traits::LocalBasisType::Traits T
    Definition pqkfactory.hh:114
    \n+
    LocalFiniteElementVirtualInterface< T > FE
    Definition pqkfactory.hh:115
    \n+
    PQkLocalFiniteElementCache()
    Default constructor.
    Definition pqkfactory.hh:123
    \n+
    FE FiniteElementType
    Type of the finite elements stored in this cache.
    Definition pqkfactory.hh:120
    \n+
    std::map< GeometryType, FE * > FEMap
    Definition pqkfactory.hh:116
    \n+
    const FiniteElementType & get(const GeometryType &gt) const
    Get local finite element for given GeometryType.
    Definition pqkfactory.hh:143
    \n+
    FEMap cache_
    Definition pqkfactory.hh:159
    \n+
    ~PQkLocalFiniteElementCache()
    Definition pqkfactory.hh:134
    \n+
    PQkLocalFiniteElementCache(const PQkLocalFiniteElementCache &other)
    Copy constructor.
    Definition pqkfactory.hh:126
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,323 +1,263 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_PQKFACTORY_HH\n 7\n-8#include \n+8#include \n 9\n-10#include \n-11#include \n-12#include \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+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-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-_\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+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+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+98\n+99\n+110 template\n+_\b1_\b1_\b1 class _\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 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+113 protected:\n+_\b1_\b1_\b4 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_\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_\b> _\bF_\bE;\n+_\b1_\b1_\b6 typedef typename std::map _\bF_\bE_\bM_\ba_\bp;\n+117\n+118 public:\n+_\b1_\b2_\b0 typedef _\bF_\bE _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bT_\by_\bp_\be;\n+121\n+_\b1_\b2_\b3 _\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+124\n+_\b1_\b2_\b6 _\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+127 {\n+128 typename FEMap::iterator it = other._\bc_\ba_\bc_\bh_\be_\b_.begin();\n+129 typename FEMap::iterator end = other._\bc_\ba_\bc_\bh_\be_\b_.end();\n+130 for(; it!=end; ++it)\n+131 _\bc_\ba_\bc_\bh_\be_\b_[it->first] = (it->second)->clone();\n+132 }\n+133\n+_\b1_\b3_\b4 _\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+135 {\n+136 typename FEMap::iterator it = _\bc_\ba_\bc_\bh_\be_\b_.begin();\n+137 typename FEMap::iterator end = _\bc_\ba_\bc_\bh_\be_\b_.end();\n+138 for(; it!=end; ++it)\n+139 delete it->second;\n+140 }\n+141\n+_\b1_\b4_\b3 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+144 {\n+145 typename FEMap::const_iterator it = _\bc_\ba_\bc_\bh_\be_\b_.find(gt);\n+146 if (it==_\bc_\ba_\bc_\bh_\be_\b_.end())\n+147 {\n+148 _\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+149 if (fe==0)\n+150 DUNE_THROW(Dune::NotImplemented,\"No Pk/Qk like local finite element\n+available for geometry type \" << gt << \" and order \" << k);\n+151\n+152 _\bc_\ba_\bc_\bh_\be_\b_[gt] = fe;\n+153 return *fe;\n+154 }\n+155 return *(it->second);\n+156 }\n+157\n+158 protected:\n+_\b1_\b5_\b9 mutable _\bF_\bE_\bM_\ba_\bp _\bc_\ba_\bc_\bh_\be_\b_;\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-_\bt_\be_\bn_\bs_\bo_\br_\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+161 };\n+162\n+163}\n+164\n+165#endif\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_\bp_\by_\br_\ba_\bm_\bi_\bd_\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+_\bp_\b0_\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:_\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:168\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:172\n+_\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:286\n+_\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:711\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:652\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:812\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:838\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:112\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: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:_\bF_\bE\n+LocalFiniteElementVirtualInterface< T > FE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn pqkfactory.hh:115\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:123\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:120\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: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:_\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:143\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:159\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:134\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:126\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: polynomialbasis.hh File Reference\n+dune-localfunctions: pk1d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,50 +65,55 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    polynomialbasis.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    pk1d.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 Classes

    class  Dune::PolynomialBasis< Eval, CM, D, R >
    class  Dune::Pk1DFiniteElement< Geometry, RF, k >
     Langrange finite element of arbitrary order on triangles. More...
     
    struct  Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DVector >
    struct  Dune::Pk1DFiniteElement< Geometry, RF, k >::Traits
     
    struct  Dune::PolynomialBasis< Eval, CM, D, R >::Convert< dummy, DomainVector >
     
    class  Dune::PolynomialBasisWithMatrix< Eval, CM, D, R >
    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+Typedefs

    template<class D , class R , unsigned int k>
    using Dune::Pk1DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 1, k >
     Lagrange finite element on the unit interval with arbitrary compile-time order.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,33 +1,36 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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\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+ * _\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 | _\bT_\by_\bp_\be_\bd_\be_\bf_\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 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+ 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_\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:_\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_\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+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 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:_\bP_\bk_\b1_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n+ 1, k >\n+\u00a0 Lagrange finite element on the unit interval with arbitrary compile-time\n+ 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/a00479_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00479_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: pk1d.hh Source File\n \n \n \n \n \n \n \n@@ -70,481 +70,152 @@\n
    \n \n \n \n \n \n \n
    \n-
    polynomialbasis.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 (C) 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_PK1DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_PK1DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <fstream>
    \n-
    9#include <numeric>
    \n-
    10
    \n-
    11#include <dune/common/fmatrix.hh>
    \n-
    12
    \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-
    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 sceme
    \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+
    8#include <cstddef>
    \n+
    9
    \n+
    10#include <dune/geometry/type.hh>
    \n+
    11
    \n+\n+\n+\n+
    15
    \n+
    16#warning This header is deprecated
    \n+
    17
    \n+
    18namespace Dune
    \n+
    19{
    \n+
    20
    \n+
    25 template<class D, class R, unsigned int k>
    \n+\n+
    27 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n+\n+
    29
    \n+
    30
    \n+
    32
    \n+
    39 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+
    41 typedef typename Geometry::ctype DF;
    \n+
    42 typedef Impl::LagrangeSimplexLocalBasis<DF,RF,1,k> LocalBasis;
    \n+
    43 typedef Impl::LagrangeSimplexLocalInterpolation<LocalBasis> LocalInterpolation;
    \n+
    44
    \n+
    45 public:
    \n+
    \n+
    49 struct Traits {
    \n+\n+\n+
    52 LocalInterpolation,
    \n+
    53 typename Basis::Traits
    \n+\n+
    55 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> Coefficients;
    \n+
    56 };
    \n+
    \n+
    57
    \n+
    58 private:
    \n+
    59 static const GeometryType gt;
    \n+
    60 static const LocalBasis localBasis;
    \n+
    61 static const LocalInterpolation localInterpolation;
    \n+
    62
    \n+
    63 typename Traits::Basis basis_;
    \n+
    64 typename Traits::Interpolation interpolation_;
    \n+
    65 typename Traits::Coefficients coefficients_;
    \n+
    66
    \n+
    67 public:
    \n+
    69
    \n+
    82 template<class VertexOrder>
    \n+
    \n+
    83 Pk1DFiniteElement(const Geometry &geometry,
    \n+
    84 const VertexOrder& vertexOrder) :
    \n+
    85 basis_(localBasis, geometry), interpolation_(localInterpolation),
    \n+
    86 coefficients_(vertexOrder.begin(0, 0))
    \n+
    87 { }
    \n+
    \n+
    88
    \n+
    89 const typename Traits::Basis& basis() const { return basis_; }
    \n+
    \n+
    90 const typename Traits::Interpolation& interpolation() const
    \n+
    91 { return interpolation_; }
    \n+
    \n+
    \n+
    92 const typename Traits::Coefficients& coefficients() const
    \n+
    93 { return coefficients_; }
    \n+
    \n+
    94 const GeometryType &type() const { return gt; }
    \n+
    95 };
    \n+
    \n+
    96
    \n+
    97 template<class Geometry, class RF, std::size_t k>
    \n+
    98 const GeometryType
    \n+
    99 Pk1DFiniteElement<Geometry, RF, k>::gt(GeometryTypes::simplex(2));
    \n+
    100
    \n+
    101 template<class Geometry, class RF, std::size_t k>
    \n+
    102 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalBasis
    \n+
    103 Pk1DFiniteElement<Geometry, RF, k>::localBasis = LocalBasis();
    \n+
    104
    \n+
    105 template<class Geometry, class RF, std::size_t k>
    \n+
    106 const typename Pk1DFiniteElement<Geometry, RF, k>::LocalInterpolation
    \n+
    107 Pk1DFiniteElement<Geometry, RF, k>::localInterpolation =
    \n+
    108 LocalInterpolation();
    \n+
    109
    \n+
    111
    \n+
    121 template<class Geometry, class RF, std::size_t k>
    \n+
    \n+\n+\n+
    124
    \n+
    126
    \n+
    140 template<class VertexOrder>
    \n+
    \n+
    141 const FiniteElement make(const Geometry& geometry,
    \n+
    142 const VertexOrder& vertexOrder)
    \n+
    143 { return FiniteElement(geometry, vertexOrder); }
    \n+
    \n+
    144 };
    \n+
    \n+
    145}
    \n+
    146
    \n+
    147#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-
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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+
    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+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n+
    Langrange finite element of arbitrary order on triangles.
    Definition pk1d.hh:40
    \n+
    Pk1DFiniteElement(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct a Pk1DFiniteElement
    Definition pk1d.hh:83
    \n+
    const Traits::Basis & basis() const
    Definition pk1d.hh:89
    \n+
    const GeometryType & type() const
    Definition pk1d.hh:94
    \n+
    const Traits::Coefficients & coefficients() const
    Definition pk1d.hh:92
    \n+
    const Traits::Interpolation & interpolation() const
    Definition pk1d.hh:90
    \n+
    Definition pk1d.hh:49
    \n+
    ScalarLocalToGlobalBasisAdaptor< LocalBasis, Geometry > Basis
    Definition pk1d.hh:50
    \n+
    LocalToGlobalInterpolationAdaptor< LocalInterpolation, typename Basis::Traits > Interpolation
    Definition pk1d.hh:54
    \n+
    Impl::LagrangeSimplexLocalCoefficients< 1, k > Coefficients
    Definition pk1d.hh:55
    \n+
    Factory for Pk1DFiniteElement objects.
    Definition pk1d.hh:122
    \n+
    const FiniteElement make(const Geometry &geometry, const VertexOrder &vertexOrder)
    construct Pk1DFiniteElementFactory
    Definition pk1d.hh:141
    \n+
    Pk1DFiniteElement< Geometry, RF, k > FiniteElement
    Definition pk1d.hh:123
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,538 +1,169 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_PK1DLOCALFINITEELEMENT_HH\n+6#define DUNE_PK1DLOCALFINITEELEMENT_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-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-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 sceme\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-_\bb_\ba_\bs_\bi_\bs_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\bh\n-_\bm_\bo_\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+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+16#warning This header is deprecated\n+17\n+18namespace _\bD_\bu_\bn_\be\n+19{\n+20\n+25 template\n+_\b2_\b6 using _\bP_\bk_\b1_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+27 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n+28 = _\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,_\b1_\b,_\bk_\b>;\n+29\n+30\n+32\n+39 template\n+_\b4_\b0 class _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt {\n+41 typedef typename Geometry::ctype DF;\n+42 typedef Impl::LagrangeSimplexLocalBasis LocalBasis;\n+43 typedef Impl::LagrangeSimplexLocalInterpolation\n+LocalInterpolation;\n+44\n+45 public:\n+_\b4_\b9 struct _\bT_\br_\ba_\bi_\bt_\bs {\n+_\b5_\b0 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+51 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+52 LocalInterpolation,\n+53 typename _\bB_\ba_\bs_\bi_\bs_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+_\b5_\b4 > _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn;\n+_\b5_\b5 typedef Impl::LagrangeSimplexLocalCoefficients<1,k> _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs;\n+56 };\n+57\n+58 private:\n+59 static const GeometryType gt;\n+60 static const LocalBasis localBasis;\n+61 static const LocalInterpolation localInterpolation;\n+62\n+63 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs basis_;\n+64 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation_;\n+65 typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs coefficients_;\n+66\n+67 public:\n+69\n+82 template\n+_\b8_\b3 _\bP_\bk_\b1_\bD_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(const Geometry &geometry,\n+84 const VertexOrder& vertexOrder) :\n+85 basis_(localBasis, geometry), interpolation_(localInterpolation),\n+86 coefficients_(vertexOrder.begin(0, 0))\n+87 { }\n+88\n+_\b8_\b9 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bB_\ba_\bs_\bi_\bs& _\bb_\ba_\bs_\bi_\bs() const { return basis_; }\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_\b2 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+93 { return coefficients_; }\n+_\b9_\b4 const GeometryType &_\bt_\by_\bp_\be() const { return gt; }\n+95 };\n+96\n+97 template\n+98 const GeometryType\n+99 Pk1DFiniteElement::gt(GeometryTypes::simplex(2));\n+100\n+101 template\n+102 const typename Pk1DFiniteElement::LocalBasis\n+103 Pk1DFiniteElement::localBasis = LocalBasis();\n+104\n+105 template\n+106 const typename Pk1DFiniteElement::LocalInterpolation\n+107 Pk1DFiniteElement::localInterpolation =\n+108 LocalInterpolation();\n+109\n+111\n+121 template\n+_\b1_\b2_\b2 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_\b2_\b3 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+124\n+126\n+140 template\n+_\b1_\b4_\b1 const _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt _\bm_\ba_\bk_\be(const Geometry& geometry,\n+142 const VertexOrder& vertexOrder)\n+143 { return _\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt(geometry, vertexOrder); }\n+144 };\n+145}\n+146\n+147#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_\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 _\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:34\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:42\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_\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:_\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:838\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:40\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: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:_\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:89\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:94\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:92\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:90\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:49\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:50\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:54\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:55\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:122\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:141\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:123\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolationhelper.hh File Reference\n+dune-localfunctions: pyramidp1.hh File Reference\n \n \n \n \n \n \n \n@@ -65,45 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    interpolationhelper.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    pyramidp1.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 <dune/localfunctions/common/localinterpolation.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Namespaces

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

    \n+Typedefs

    template<class D , class R >
    using Dune::PyramidP1LocalFiniteElement = LagrangePyramidLocalFiniteElement< D, R, 1 >
     First-order Lagrangian finite element on a three-dimensional pyramid.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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\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-#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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+pyramidp1.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/_\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 _\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-\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:_\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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+ D, R, 1 >\n+\u00a0 First-order Lagrangian finite element on a three-dimensional pyramid.\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/a00482_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00482_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: pyramidp1.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,47 @@\n
    \n \n \n \n \n \n \n
    \n-
    interpolationhelper.hh
    \n+
    pyramidp1.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 (C) 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-
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/concept.hh>
    \n-\n-\n-
    14
    \n-
    15namespace Dune
    \n-
    16{
    \n-
    17 // A small helper class to avoid having to
    \n-
    18 // write the interpolation twice (once for function
    \n-
    19 // and once for a basis)
    \n-
    20 template< class F, unsigned int dimension >
    \n-
    \n-\n-
    22 {
    \n-
    23 template <class Func,class Container, bool type>
    \n-
    24 struct Helper;
    \n-
    25 };
    \n-
    \n-
    26 template <class F,unsigned int d>
    \n-
    27 template <class Func,class Vector>
    \n-
    \n-
    28 struct InterpolationHelper<F,d>::Helper<Func,Vector,true>
    \n-
    29 // Func is of Function type
    \n-
    30 {
    \n-
    31 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n-
    \n-
    32 Helper(const Func & func, Vector &vec)
    \n-
    33 : func_(func),
    \n-
    34 vec_(vec),
    \n-
    35 tmp_(1)
    \n-
    36 {}
    \n-
    \n-
    \n-
    37 const typename Vector::value_type &operator()(unsigned int row,unsigned int col)
    \n-
    38 {
    \n-
    39 return vec_[row];
    \n-
    40 }
    \n-
    \n-
    41 template <class Fy>
    \n-
    \n-
    42 void set(unsigned int row,unsigned int col,
    \n-
    43 const Fy &val)
    \n-
    44 {
    \n-
    45 assert(col==0);
    \n-
    46 assert(row<vec_.size());
    \n-
    47 field_cast( val, vec_[row] );
    \n-
    48 }
    \n-
    \n-
    49 template <class Fy>
    \n-
    \n-
    50 void add(unsigned int row,unsigned int col,
    \n-
    51 const Fy &val)
    \n-
    52 {
    \n-
    53 assert(col==0);
    \n-
    54 assert(row<vec_.size());
    \n-
    55 vec_[row] += field_cast<typename Vector::value_type>(val);
    \n-
    56 }
    \n-
    \n-
    57 template <class DomainVector,
    \n-
    58 std::enable_if_t<models<Impl::FunctionWithCallOperator<DomainVector>, Func>(), int> = 0>
    \n-
    \n-
    59 const Result &evaluate(const DomainVector &x) const
    \n-
    60 {
    \n-
    61 field_cast(func_(x), tmp_[0] );
    \n-
    62 return tmp_;
    \n-
    63 }
    \n-
    \n-
    64 template <class DomainVector,
    \n-
    65 std::enable_if_t<not models<Impl::FunctionWithCallOperator<DomainVector>, Func>(), int> = 0>
    \n-
    \n-
    66 const Result &evaluate(const DomainVector &x) const
    \n-
    67 {
    \n-
    68 typename Func::DomainType xx ;
    \n-
    69 typename Func::RangeType ff ;
    \n-
    70 field_cast(x,xx);
    \n-
    71 func_.evaluate(xx,ff);
    \n-
    72 field_cast(ff, tmp_[0] );
    \n-
    73 return tmp_;
    \n-
    74 }
    \n-
    \n-
    \n-
    75 unsigned int size() const
    \n-
    76 {
    \n-
    77 return 1;
    \n-
    78 }
    \n-
    \n-
    79 const Func &func_;
    \n-
    80 Vector &vec_;
    \n-
    81 mutable Result tmp_;
    \n-
    82 };
    \n-
    \n-
    83 template <class F,unsigned int d>
    \n-
    84 template <class Basis,class Matrix>
    \n-
    \n-
    85 struct InterpolationHelper<F,d>::Helper<Basis,Matrix,false>
    \n-
    86 // Func is of Basis type
    \n-
    87 {
    \n-
    88 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n-
    \n-
    89 Helper(const Basis & basis, Matrix &matrix)
    \n-
    90 : basis_(basis),
    \n-
    91 matrix_(matrix),
    \n-
    92 tmp_(basis.size()) {}
    \n-
    \n-
    \n-
    93 const F &operator()(unsigned int row,unsigned int col) const
    \n-
    94 {
    \n-
    95 return matrix_(row,col);
    \n-
    96 }
    \n-
    \n-
    \n-
    97 F &operator()(unsigned int row,unsigned int col)
    \n-
    98 {
    \n-
    99 return matrix_(row,col);
    \n-
    100 }
    \n-
    \n-
    101 template <class Fy>
    \n-
    \n-
    102 void set(unsigned int row,unsigned int col,
    \n-
    103 const Fy &val)
    \n-
    104 {
    \n-
    105 assert(col<matrix_.cols());
    \n-
    106 assert(row<matrix_.rows());
    \n-
    107 field_cast(val,matrix_(row,col));
    \n-
    108 }
    \n-
    \n-
    109 template <class Fy>
    \n-
    \n-
    110 void add(unsigned int row,unsigned int col,
    \n-
    111 const Fy &val)
    \n-
    112 {
    \n-
    113 assert(col<matrix_.cols());
    \n-
    114 assert(row<matrix_.rows());
    \n-
    115 matrix_(row,col) += val;
    \n-
    116 }
    \n-
    \n-
    117 template <class DomainVector>
    \n-
    \n-
    118 const Result &evaluate(const DomainVector &x) const
    \n-
    119 {
    \n-
    120 basis_.template evaluate<0>(x,tmp_);
    \n-
    121 return tmp_;
    \n-
    122 }
    \n-
    \n-
    \n-
    123 unsigned int size() const
    \n-
    124 {
    \n-
    125 return basis_.size();
    \n-
    126 }
    \n-
    \n-
    127
    \n-
    128 const Basis &basis_;
    \n-
    129 Matrix &matrix_;
    \n-
    130 mutable Result tmp_;
    \n-
    131 };
    \n-
    \n-
    132}
    \n-
    133#endif // GENERIC_INTERPOLATIONHELPER_HH
    \n-\n+
    5
    \n+
    6#ifndef DUNE_PYRAMID_P1_LOCALFINITEELEMENT_HH
    \n+
    7#define DUNE_PYRAMID_P1_LOCALFINITEELEMENT_HH
    \n+
    8
    \n+\n+
    10
    \n+
    11#warning This header is deprecated
    \n+
    12
    \n+
    13namespace Dune
    \n+
    14{
    \n+
    15
    \n+
    20 template<class D, class R>
    \n+\n+
    22 [[deprecated("use LagrangePyramidLocalFiniteElement instead")]]
    \n+\n+
    24
    \n+
    25}
    \n+
    26
    \n+
    27#endif
    \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 interpolationhelper.hh:22
    \n-
    Definition interpolationhelper.hh:24
    \n-
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:50
    \n-
    const Func & func_
    Definition interpolationhelper.hh:79
    \n-
    Helper(const Func &func, Vector &vec)
    Definition interpolationhelper.hh:32
    \n-
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:59
    \n-
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:31
    \n-
    unsigned int size() const
    Definition interpolationhelper.hh:75
    \n-
    Vector & vec_
    Definition interpolationhelper.hh:80
    \n-
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:42
    \n-
    Result tmp_
    Definition interpolationhelper.hh:81
    \n-
    const Vector::value_type & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:37
    \n-
    const Basis & basis_
    Definition interpolationhelper.hh:128
    \n-
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:118
    \n-
    F & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:97
    \n-
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:102
    \n-
    Helper(const Basis &basis, Matrix &matrix)
    Definition interpolationhelper.hh:89
    \n-
    unsigned int size() const
    Definition interpolationhelper.hh:123
    \n-
    Result tmp_
    Definition interpolationhelper.hh:130
    \n-
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:110
    \n-
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:88
    \n-
    Matrix & matrix_
    Definition interpolationhelper.hh:129
    \n-
    const F & operator()(unsigned int row, unsigned int col) const
    Definition interpolationhelper.hh:93
    \n-\n+
    Lagrange finite element for 3d pyramids with compile-time polynomial order.
    Definition lagrangepyramid.hh:812
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,223 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+pyramidp1.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 (C) 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-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/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bf_\bi_\be_\bl_\bd_\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_\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 // A small helper class to avoid having to\n-18 // write the interpolation twice (once for function\n-19 // and once for a basis)\n-20 template< class F, unsigned int dimension >\n-_\b2_\b1 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n-22 {\n-23 template \n-_\b2_\b4 struct _\bH_\be_\bl_\bp_\be_\br;\n-25 };\n-26 template \n-27 template \n-_\b2_\b8 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-29 // Func is of Function type\n-30 {\n-_\b3_\b1 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n-_\b3_\b2 _\bH_\be_\bl_\bp_\be_\br(const Func & func, Vector &vec)\n-33 : func_(func),\n-34 vec_(vec),\n-35 tmp_(1)\n-36 {}\n-_\b3_\b7 const typename Vector::value_type &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int\n-col)\n-38 {\n-39 return vec_[row];\n-40 }\n-41 template \n-_\b4_\b2 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n-43 const Fy &val)\n-44 {\n-45 assert(col==0);\n-46 assert(row\n-_\b5_\b0 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n-51 const Fy &val)\n-52 {\n-53 assert(col==0);\n-54 assert(row(val);\n-56 }\n-57 template , Func>\n-(), int> = 0>\n-_\b5_\b9 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n-60 {\n-61 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(func_(x), tmp_[0] );\n-62 return tmp_;\n-63 }\n-64 template ,\n-Func>(), int> = 0>\n-_\b6_\b6 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n-67 {\n-68 typename Func::DomainType xx ;\n-69 typename Func::RangeType ff ;\n-70 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(x,xx);\n-71 func_.evaluate(xx,ff);\n-72 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(ff, tmp_[0] );\n-73 return tmp_;\n-74 }\n-_\b7_\b5 unsigned int _\bs_\bi_\bz_\be() const\n-76 {\n-77 return 1;\n-78 }\n-_\b7_\b9 const Func &_\bf_\bu_\bn_\bc_\b_;\n-_\b8_\b0 Vector &_\bv_\be_\bc_\b_;\n-_\b8_\b1 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n-82 };\n-83 template \n-84 template \n-_\b8_\b5 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-86 // Func is of Basis type\n-87 {\n-_\b8_\b8 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n-_\b8_\b9 _\bH_\be_\bl_\bp_\be_\br(const Basis & basis, Matrix &matrix)\n-90 : basis_(basis),\n-91 matrix_(matrix),\n-92 tmp_(basis.size()) {}\n-_\b9_\b3 const F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col) const\n-94 {\n-95 return matrix_(row,col);\n-96 }\n-_\b9_\b7 F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col)\n-98 {\n-99 return matrix_(row,col);\n-100 }\n-101 template \n-_\b1_\b0_\b2 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n-103 const Fy &val)\n-104 {\n-105 assert(col\n-_\b1_\b1_\b0 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n-111 const Fy &val)\n-112 {\n-113 assert(col\n-_\b1_\b1_\b8 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n-119 {\n-120 basis_.template evaluate<0>(x,tmp_);\n-121 return tmp_;\n-122 }\n-_\b1_\b2_\b3 unsigned int _\bs_\bi_\bz_\be() const\n-124 {\n-125 return basis_.size();\n-126 }\n-127\n-_\b1_\b2_\b8 const Basis &_\bb_\ba_\bs_\bi_\bs_\b_;\n-_\b1_\b2_\b9 Matrix &_\bm_\ba_\bt_\br_\bi_\bx_\b_;\n-_\b1_\b3_\b0 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n-131 };\n-132}\n-133#endif // GENERIC_INTERPOLATIONHELPER_HH\n-_\bf_\bi_\be_\bl_\bd_\b._\bh_\bh\n+5\n+6#ifndef DUNE_PYRAMID_P1_LOCALFINITEELEMENT_HH\n+7#define DUNE_PYRAMID_P1_LOCALFINITEELEMENT_HH\n+8\n+9#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+10\n+11#warning This header is deprecated\n+12\n+13namespace _\bD_\bu_\bn_\be\n+14{\n+15\n+20 template\n+_\b2_\b1 using _\bP_\by_\br_\ba_\bm_\bi_\bd_\bP_\b1_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+22 [[deprecated(\"use LagrangePyramidLocalFiniteElement instead\")]]\n+23 = _\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+24\n+25}\n+26\n+27#endif\n+_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bp_\by_\br_\ba_\bm_\bi_\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:_\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:22\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:24\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:50\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:79\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:32\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:59\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: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:_\bs_\bi_\bz_\be\n-unsigned int size() const\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 _\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:80\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:42\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:81\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:37\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:128\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:118\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: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:_\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:102\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: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:_\bs_\bi_\bz_\be\n-unsigned int size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:123\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:130\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: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:_\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:88\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:129\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:93\n-_\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_\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:812\n ===============================================================================\n 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: dglocalcoefficients.hh File Reference\n+dune-localfunctions: pk.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,38 @@\n \n \n \n \n \n \n \n
    \n \n-
    dglocalcoefficients.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    pk.hh File Reference
    \n \n
    \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-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...
     
    \n \n \n \n+

    \n Namespaces

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

    \n+Typedefs

    template<class D , class R , int d, int k>
    using Dune::PkLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, d, k >
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,21 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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\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+ * _\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+pk.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/_\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:_\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R, d,\n+ k >\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: dglocalcoefficients.hh Source File\n+dune-localfunctions: pk.hh Source File\n \n \n \n \n \n \n \n@@ -70,117 +70,45 @@\n
    \n \n \n \n \n \n \n
    \n-
    dglocalcoefficients.hh
    \n+
    pk.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 (C) 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-
    7
    \n-
    8#include <cassert>
    \n-
    9#include <vector>
    \n+
    3/* vim: set ai expandtab sw=4 ts=4: */
    \n+
    4// SPDX-FileCopyrightInfo: Copyright (C) DUNE Project contributors, see file LICENSE.md in module root
    \n+
    5// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
    \n+
    6#ifndef DUNE_PK_LOCALFINITEELEMENT_HH
    \n+
    7#define DUNE_PK_LOCALFINITEELEMENT_HH
    \n+
    8
    \n+\n
    10
    \n-\n+
    11#warning This header is deprecated
    \n
    12
    \n
    13namespace Dune
    \n
    14{
    \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-
    \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-
    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+
    18 template<class D, class R, int d, int k>
    \n+\n+
    20 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n+\n+
    22}
    \n+
    23
    \n+
    24#endif
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \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+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,120 +1,40 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+pk.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 (C) DUNE Project contributors, see file\n+3/* vim: set ai expandtab sw=4 ts=4: */\n+4// SPDX-FileCopyrightInfo: Copyright (C) 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-7\n-8#include \n-9#include \n+5// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception\n+6#ifndef DUNE_PK_LOCALFINITEELEMENT_HH\n+7#define DUNE_PK_LOCALFINITEELEMENT_HH\n+8\n+9#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 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+11#warning This header is deprecated\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-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-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+18 template\n+_\b1_\b9 using _\bP_\bk_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+20 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n+21 = _\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,_\b _\bR_\b,_\b _\bd_\b,_\b _\bk_\b>;\n+22}\n+23\n+24#endif\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_\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: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\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+_\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:838\n ===============================================================================\n 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: field.hh File Reference\n+dune-localfunctions: p0.hh File Reference\n \n \n \n \n \n \n \n@@ -65,128 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    field.hh File Reference
    \n+Namespaces
    \n+
    p0.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 <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-\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::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-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\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,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+_\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 _\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_\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-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/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: field.hh Source File\n+dune-localfunctions: p0.hh Source File\n \n \n \n \n \n \n \n@@ -70,385 +70,118 @@\n
    \n \n \n \n \n \n \n
    \n-
    field.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 (C) 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_P0LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_P0LOCALFINITEELEMENT_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-
    11
    \n-
    12namespace Dune
    \n-
    13{
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+
    11#include "p0/p0localbasis.hh"
    \n+\n+\n
    14
    \n-
    15 // Unity
    \n-
    16 // -----
    \n+
    15namespace Dune
    \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-
    \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+
    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+
    \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-
    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+
    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+
    Constant shape function.
    Definition p0localbasis.hh:30
    \n+
    Layout map for P0 elements.
    Definition p0localcoefficients.hh:24
    \n+
    Definition p0localinterpolation.hh:18
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \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,351 +1,127 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_P0LOCALFINITEELEMENT_HH\n+6#define DUNE_P0LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10#include \n-11\n-12namespace _\bD_\bu_\bn_\be\n-13{\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-15 // Unity\n-16 // -----\n+15namespace _\bD_\bu_\bn_\be\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 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+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+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+_\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 _\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:_\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+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+Constant shape function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localbasis.hh:30\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+Layout map for P0 elements.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn p0localcoefficients.hh:24\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:18\n ===============================================================================\n 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: l2interpolation.hh File Reference\n+dune-localfunctions: p23d.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    l2interpolation.hh File Reference
    \n+Namespaces |\n+Typedefs
    \n+
    p23d.hh File Reference
    \n \n
    \n-
    #include <dune/common/concept.hh>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n-#include <dune/localfunctions/utility/lfematrix.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::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+\n+\n+\n+\n+\n

    \n+Typedefs

    template<class D , class R >
    using Dune::P23DLocalFiniteElement = LagrangeSimplexLocalFiniteElement< D, R, 3, 2 >
     Second-order Lagrange local finite element on the reference tetrahedron.
     
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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\n-l2interpolation.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_\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/_\bu_\bt_\bi_\bl_\bi_\bt_\by_\b/_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\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+p23d.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/_\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-\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+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+template\n+using\u00a0 _\bD_\bu_\bn_\be_\b:_\b:_\bP_\b2_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt = _\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< D, R,\n+ 3, 2 >\n+\u00a0 Second-order Lagrange local finite element on the reference tetrahedron.\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/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: l2interpolation.hh Source File\n+dune-localfunctions: p23d.hh Source File\n \n \n \n \n \n \n \n@@ -70,280 +70,46 @@\n
    \n \n \n \n \n \n \n
    \n-
    l2interpolation.hh
    \n+
    p23d.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 (C) 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_P2_3DLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_P2_3DLOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <dune/common/concept.hh>
    \n+\n
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n+
    10#warning This header is deprecated
    \n
    11
    \n-\n-\n+
    12namespace Dune
    \n+
    13{
    \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, std::enable_if_t<models<Impl::FunctionWithEvaluate<typename Function::DomainType, typename Function::RangeType>, Function>(), int> = 0 >
    \n-
    \n-
    48 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n-
    49 {
    \n-
    50 typedef typename Quadrature::iterator Iterator;
    \n-
    51 typedef FieldVector< DofField, Basis::dimRange > RangeVector;
    \n-
    52
    \n-
    53 const unsigned int size = basis().size();
    \n-
    54 static std::vector< RangeVector > basisValues( size );
    \n-
    55
    \n-
    56 coefficients.resize( size );
    \n-
    57 basisValues.resize( size );
    \n-
    58 for( unsigned int i = 0; i < size; ++i )
    \n-
    59 coefficients[ i ] = Zero< DofField >();
    \n-
    60
    \n-
    61 const Iterator end = quadrature().end();
    \n-
    62 for( Iterator it = quadrature().begin(); it != end; ++it )
    \n-
    63 {
    \n-
    64 basis().evaluate( it->position(), basisValues );
    \n-
    65 typename Function::RangeType val;
    \n-
    66 function.evaluate( field_cast<typename Function::DomainType::field_type>(it->position()), val );
    \n-
    67 RangeVector factor = field_cast< DofField >( val );
    \n-
    68 factor *= field_cast< DofField >( it->weight() );
    \n-
    69 for( unsigned int i = 0; i < size; ++i )
    \n-
    70 coefficients[ i ] += factor * basisValues[ i ];
    \n-
    71 }
    \n-
    72 }
    \n-
    \n-
    73
    \n-
    75 template< class Function, class DofField, std::enable_if_t<models<Impl::FunctionWithCallOperator<typename Quadrature::value_type::Vector>, Function>(), int> = 0 >
    \n-
    \n-
    76 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n-
    77 {
    \n-
    78 typedef FieldVector< DofField, Basis::dimRange > RangeVector;
    \n-
    79
    \n-
    80 const unsigned int size = basis().size();
    \n-
    81 static std::vector< RangeVector > basisValues( size );
    \n-
    82
    \n-
    83 coefficients.resize( size );
    \n-
    84 basisValues.resize( size );
    \n-
    85 for( unsigned int i = 0; i < size; ++i )
    \n-
    86 coefficients[ i ] = Zero< DofField >();
    \n-
    87
    \n-
    88 for (auto&& qp : quadrature())
    \n-
    89 {
    \n-
    90 basis().evaluate( qp.position(), basisValues );
    \n-
    91 auto val = function( qp.position() );
    \n-
    92 RangeVector factor = field_cast< DofField >( val );
    \n-
    93 factor *= field_cast< DofField >( qp.weight() );
    \n-
    94 for( unsigned int i = 0; i < size; ++i )
    \n-
    95 coefficients[ i ] += factor * basisValues[ i ];
    \n-
    96 }
    \n-
    97 }
    \n-
    \n-
    98
    \n-
    \n-
    99 const Basis &basis () const
    \n-
    100 {
    \n-
    101 return basis_;
    \n-
    102 }
    \n-
    \n-
    103
    \n-
    \n-
    104 const Quadrature &quadrature () const
    \n-
    105 {
    \n-
    106 return quadrature_;
    \n-
    107 }
    \n-
    \n-
    108
    \n-
    109 protected:
    \n-
    \n-\n-
    111 : basis_( basis ),
    \n-\n-
    113 {}
    \n-
    \n-
    114
    \n-
    115 const Basis &basis_;
    \n-\n-
    117 };
    \n-
    \n-
    118
    \n-
    119 template< class B, class Q >
    \n-
    \n-
    120 struct LocalL2Interpolation<B,Q,true>
    \n-
    121 : public LocalL2InterpolationBase<B,Q>
    \n-
    122 {
    \n-\n-
    124 template< class BasisFactory, bool onb >
    \n-\n-
    126 using typename Base::Basis;
    \n-
    127 using typename Base::Quadrature;
    \n-
    128 private:
    \n-
    129 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n-
    130 : Base(basis,quadrature)
    \n-
    131 {}
    \n-
    132 };
    \n-
    \n-
    133 template< class B, class Q >
    \n-
    \n-
    134 struct LocalL2Interpolation<B,Q,false>
    \n-
    135 : public LocalL2InterpolationBase<B,Q>
    \n-
    136 {
    \n-\n-
    138 template< class BasisFactory, bool onb >
    \n-\n-
    140 using typename Base::Basis;
    \n-
    141 using typename Base::Quadrature;
    \n-
    142 template< class Function, class DofField >
    \n-
    \n-
    143 void interpolate ( const Function &function, std::vector< DofField > &coefficients ) const
    \n-
    144 {
    \n-
    145 const unsigned size = Base::basis().size();
    \n-
    146 Base::interpolate(function,val_);
    \n-
    147 coefficients.resize( size );
    \n-
    148 for (unsigned int i=0; i<size; ++i)
    \n-
    149 {
    \n-
    150 coefficients[i] = 0;
    \n-
    151 for (unsigned int j=0; j<size; ++j)
    \n-
    152 {
    \n-
    153 coefficients[i] += field_cast<DofField>(massMatrix_(i,j)*val_[j]);
    \n-
    154 }
    \n-
    155 }
    \n-
    156 }
    \n-
    \n-
    157 private:
    \n-
    158 LocalL2Interpolation ( const typename Base::Basis &basis, const typename Base::Quadrature &quadrature )
    \n-
    159 : Base(basis,quadrature),
    \n-
    160 val_(basis.size()),
    \n-
    161 massMatrix_()
    \n-
    162 {
    \n-
    163 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n-
    164 typedef typename Base::Quadrature::iterator Iterator;
    \n-
    165 const unsigned size = basis.size();
    \n-
    166 std::vector< RangeVector > basisValues( size );
    \n-
    167
    \n-
    168 massMatrix_.resize( size,size );
    \n-
    169 for (unsigned int i=0; i<size; ++i)
    \n-
    170 for (unsigned int j=0; j<size; ++j)
    \n-
    171 massMatrix_(i,j) = 0;
    \n-
    172 const Iterator end = Base::quadrature().end();
    \n-
    173 for( Iterator it = Base::quadrature().begin(); it != end; ++it )
    \n-
    174 {
    \n-
    175 Base::basis().evaluate( it->position(), basisValues );
    \n-
    176 for (unsigned int i=0; i<size; ++i)
    \n-
    177 for (unsigned int j=0; j<size; ++j)
    \n-
    178 massMatrix_(i,j) += (basisValues[i]*basisValues[j])*it->weight();
    \n-
    179 }
    \n-
    180 if ( !massMatrix_.invert() )
    \n-
    181 {
    \n-
    182 DUNE_THROW(MathError, "Mass matrix singular in LocalL2Interpolation");
    \n-
    183 }
    \n-
    184
    \n-
    185 }
    \n-
    186 typedef typename Base::Basis::StorageField Field;
    \n-
    187 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;
    \n-
    188 typedef LFEMatrix<Field> MassMatrix;
    \n-
    189 mutable std::vector<Field> val_;
    \n-
    190 MassMatrix massMatrix_;
    \n-
    191 };
    \n-
    \n-
    192
    \n-
    197 template< class BasisFactory, bool onb >
    \n-
    \n-\n-
    199 {
    \n-
    200 static const unsigned int dimension = BasisFactory::dimension;
    \n-
    201 typedef typename BasisFactory::Key Key;
    \n-
    202 typedef typename BasisFactory::Object Basis;
    \n-
    203 typedef double Field;
    \n-
    204 typedef QuadratureRule<Field,dimension> Quadrature;
    \n-
    205 typedef QuadratureRules<Field,dimension> QuadratureProvider;
    \n-\n-\n-
    208
    \n-
    209 template< GeometryType::Id geometryId >
    \n-
    \n-
    210 static Object *create ( const Key &key )
    \n-
    211 {
    \n-
    212 constexpr Dune::GeometryType geometry = geometryId;
    \n-
    213 const Basis *basis = BasisFactory::template create< geometry >( key );
    \n-
    214 const Quadrature & quadrature = QuadratureProvider::rule(geometry, 2*basis->order()+1);
    \n-
    215 return new Object( *basis, quadrature );
    \n-
    216 }
    \n-
    \n-
    \n-
    217 static void release ( Object *object )
    \n-
    218 {
    \n-
    219 const Basis &basis = object->basis();
    \n-
    220 BasisFactory::release( &basis );
    \n-
    221 delete object;
    \n-
    222 }
    \n-
    \n-
    223 };
    \n-
    \n-
    224
    \n-
    225}
    \n-
    226
    \n-
    227#endif // #ifndef DUNE_L2INTERPOLATION_HH
    \n-\n+
    22 template<class D, class R>
    \n+\n+
    24 [[deprecated("use LagrangeSimplexLocalFiniteElement instead")]]
    \n+\n+
    26
    \n+
    27}
    \n+
    28
    \n+
    29#endif
    \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:110
    \n-
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Interpolate a function that implements void evaluate(Domain, Range&)
    Definition l2interpolation.hh:48
    \n-
    const Basis & basis() const
    Definition l2interpolation.hh:99
    \n-
    const Quadrature & quadrature_
    Definition l2interpolation.hh:116
    \n-
    const Basis & basis_
    Definition l2interpolation.hh:115
    \n-
    static const unsigned int dimension
    Definition l2interpolation.hh:44
    \n-
    const Quadrature & quadrature() const
    Definition l2interpolation.hh:104
    \n-
    Q Quadrature
    Definition l2interpolation.hh:42
    \n-
    B Basis
    Definition l2interpolation.hh:41
    \n-
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:123
    \n-
    void interpolate(const Function &function, std::vector< DofField > &coefficients) const
    Definition l2interpolation.hh:143
    \n-
    LocalL2InterpolationBase< B, Q > Base
    Definition l2interpolation.hh:137
    \n-
    A factory class for the local l2 interpolations taking a basis factory.
    Definition l2interpolation.hh:199
    \n-
    static const unsigned int dimension
    Definition l2interpolation.hh:200
    \n-
    static void release(Object *object)
    Definition l2interpolation.hh:217
    \n-
    BasisFactory::Object Basis
    Definition l2interpolation.hh:202
    \n-
    double Field
    Definition l2interpolation.hh:203
    \n-
    QuadratureRules< Field, dimension > QuadratureProvider
    Definition l2interpolation.hh:205
    \n-
    QuadratureRule< Field, dimension > Quadrature
    Definition l2interpolation.hh:204
    \n-
    static Object * create(const Key &key)
    Definition l2interpolation.hh:210
    \n-
    BasisFactory::Key Key
    Definition l2interpolation.hh:201
    \n-
    const LocalInterpolation Object
    Definition l2interpolation.hh:207
    \n-
    LocalL2Interpolation< Basis, Quadrature, onb > LocalInterpolation
    Definition l2interpolation.hh:206
    \n-\n+
    Lagrange finite element for simplices with arbitrary compile-time dimension and polynomial order.
    Definition lagrangesimplex.hh:838
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,314 +1,41 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+p23d.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 (C) 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_P2_3DLOCALFINITEELEMENT_HH\n+6#define DUNE_P2_3DLOCALFINITEELEMENT_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/_\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 9\n-10#include \n+10#warning This header is deprecated\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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/_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh>\n+12namespace _\bD_\bu_\bn_\be\n+13{\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, std::enable_if_t, Function>(), int> = 0 >\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 typename Quadrature::iterator Iterator;\n-51 typedef FieldVector< DofField, Basis::dimRange > RangeVector;\n-52\n-53 const unsigned int size = _\bb_\ba_\bs_\bi_\bs().size();\n-54 static std::vector< RangeVector > basisValues( size );\n-55\n-56 coefficients.resize( size );\n-57 basisValues.resize( size );\n-58 for( unsigned int i = 0; i < size; ++i )\n-59 coefficients[ i ] = _\bZ_\be_\br_\bo_\b<_\b _\bD_\bo_\bf_\bF_\bi_\be_\bl_\bd_\b _\b>();\n-60\n-61 const Iterator end = _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be().end();\n-62 for( Iterator it = _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be().begin(); it != end; ++it )\n-63 {\n-64 _\bb_\ba_\bs_\bi_\bs().evaluate( it->position(), basisValues );\n-65 typename Function::RangeType val;\n-66 function.evaluate( field_cast(it-\n->position()), val );\n-67 RangeVector factor = field_cast< DofField >( val );\n-68 factor *= field_cast< DofField >( it->weight() );\n-69 for( unsigned int i = 0; i < size; ++i )\n-70 coefficients[ i ] += factor * basisValues[ i ];\n-71 }\n-72 }\n-73\n-75 template< class Function, class DofField, std::enable_if_t, Function>(),\n-int> = 0 >\n-_\b7_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n-&coefficients ) const\n-77 {\n-78 typedef FieldVector< DofField, Basis::dimRange > RangeVector;\n-79\n-80 const unsigned int size = _\bb_\ba_\bs_\bi_\bs().size();\n-81 static std::vector< RangeVector > basisValues( size );\n-82\n-83 coefficients.resize( size );\n-84 basisValues.resize( size );\n-85 for( unsigned int i = 0; i < size; ++i )\n-86 coefficients[ i ] = _\bZ_\be_\br_\bo_\b<_\b _\bD_\bo_\bf_\bF_\bi_\be_\bl_\bd_\b _\b>();\n-87\n-88 for (auto&& qp : _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be())\n-89 {\n-90 _\bb_\ba_\bs_\bi_\bs().evaluate( qp.position(), basisValues );\n-91 auto val = function( qp.position() );\n-92 RangeVector factor = field_cast< DofField >( val );\n-93 factor *= field_cast< DofField >( qp.weight() );\n-94 for( unsigned int i = 0; i < size; ++i )\n-95 coefficients[ i ] += factor * basisValues[ i ];\n-96 }\n-97 }\n-98\n-_\b9_\b9 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs () const\n-100 {\n-101 return _\bb_\ba_\bs_\bi_\bs_\b_;\n-102 }\n-103\n-_\b1_\b0_\b4 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be () const\n-105 {\n-106 return _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n-107 }\n-108\n-109 protected:\n-_\b1_\b1_\b0 _\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-111 : _\bb_\ba_\bs_\bi_\bs_\b_( _\bb_\ba_\bs_\bi_\bs ),\n-112 _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_( _\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be )\n-113 {}\n-114\n-_\b1_\b1_\b5 const _\bB_\ba_\bs_\bi_\bs &_\bb_\ba_\bs_\bi_\bs_\b_;\n-_\b1_\b1_\b6 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be &_\bq_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\b_;\n-117 };\n-118\n-119 template< class B, class Q >\n-_\b1_\b2_\b0 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-121 : 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-122 {\n-_\b1_\b2_\b3 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-124 template< class BasisFactory, bool onb >\n-_\b1_\b2_\b5 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-126 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n-127 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n-128 private:\n-129 _\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-130 : _\bB_\ba_\bs_\be(basis,quadrature)\n-131 {}\n-132 };\n-133 template< class B, class Q >\n-_\b1_\b3_\b4 struct _\bL_\bo_\bc_\ba_\bl_\bL_\b2_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-135 : 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-136 {\n-_\b1_\b3_\b7 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-138 template< class BasisFactory, bool onb >\n-_\b1_\b3_\b9 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-140 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bB_\ba_\bs_\bi_\bs;\n-141 using typename _\bB_\ba_\bs_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n-142 template< class Function, class DofField >\n-_\b1_\b4_\b3 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Function &function, std::vector< DofField >\n-&coefficients ) const\n-144 {\n-145 const unsigned size = Base::basis().size();\n-146 Base::interpolate(function,val_);\n-147 coefficients.resize( size );\n-148 for (unsigned int i=0; i(massMatrix_(i,j)*val_[j]);\n-154 }\n-155 }\n-156 }\n-157 private:\n-158 _\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-159 : Base(basis,quadrature),\n-160 val_(basis.size()),\n-161 massMatrix_()\n-162 {\n-163 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n-164 typedef typename Base::Quadrature::iterator Iterator;\n-165 const unsigned size = basis.size();\n-166 std::vector< RangeVector > basisValues( size );\n-167\n-168 massMatrix_.resize( size,size );\n-169 for (unsigned int i=0; iposition(), basisValues );\n-176 for (unsigned int i=0; iweight();\n-179 }\n-180 if ( !massMatrix_.invert() )\n-181 {\n-182 DUNE_THROW(MathError, \"Mass matrix singular in LocalL2Interpolation\");\n-183 }\n-184\n-185 }\n-186 typedef typename Base::Basis::StorageField Field;\n-187 typedef FieldVector< Field, Base::Basis::dimRange > RangeVector;\n-188 typedef LFEMatrix MassMatrix;\n-189 mutable std::vector val_;\n-190 MassMatrix massMatrix_;\n-191 };\n-192\n-197 template< class BasisFactory, bool onb >\n-_\b1_\b9_\b8 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-199 {\n-_\b2_\b0_\b0 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = BasisFactory::dimension;\n-_\b2_\b0_\b1 typedef typename BasisFactory::Key _\bK_\be_\by;\n-_\b2_\b0_\b2 typedef typename BasisFactory::Object _\bB_\ba_\bs_\bi_\bs;\n-_\b2_\b0_\b3 typedef double _\bF_\bi_\be_\bl_\bd;\n-_\b2_\b0_\b4 typedef QuadratureRule _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be;\n-_\b2_\b0_\b5 typedef QuadratureRules _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be_\bP_\br_\bo_\bv_\bi_\bd_\be_\br;\n-_\b2_\b0_\b6 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-_\b2_\b0_\b7 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-208\n-209 template< GeometryType::Id geometryId >\n-_\b2_\b1_\b0 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n-211 {\n-212 constexpr Dune::GeometryType geometry = geometryId;\n-213 const _\bB_\ba_\bs_\bi_\bs *basis = BasisFactory::template create< geometry >( key );\n-214 const _\bQ_\bu_\ba_\bd_\br_\ba_\bt_\bu_\br_\be & quadrature = QuadratureProvider::rule(geometry, 2*basis-\n->order()+1);\n-215 return new _\bO_\bb_\bj_\be_\bc_\bt( *basis, quadrature );\n-216 }\n-_\b2_\b1_\b7 static void _\br_\be_\bl_\be_\ba_\bs_\be ( _\bO_\bb_\bj_\be_\bc_\bt *object )\n-218 {\n-219 const _\bB_\ba_\bs_\bi_\bs &basis = object->basis();\n-220 BasisFactory::release( &basis );\n-221 delete object;\n-222 }\n-223 };\n-224\n-225}\n-226\n-227#endif // #ifndef DUNE_L2INTERPOLATION_HH\n-_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\b._\bh_\bh\n+22 template\n+_\b2_\b3 using _\bP_\b2_\b3_\bD_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+24 [[deprecated(\"use LagrangeSimplexLocalFiniteElement instead\")]]\n+25 = _\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,_\b3_\b,_\b2_\b>;\n+26\n+27}\n+28\n+29#endif\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:_\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:110\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 void evaluate(Domain, Range&)\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\n-const Basis & basis() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn l2interpolation.hh:99\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:116\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: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_\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:104\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:123\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:143\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:137\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:199\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:200\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:217\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:202\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:203\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:205\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:204\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:210\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:201\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:207\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:206\n-_\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_\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:838\n ===============================================================================\n 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: basisprint.hh File Reference\n+dune-localfunctions: lagrange.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,54 @@\n \n \n \n \n \n \n \n
    \n \n-
    basisprint.hh File Reference
    \n+Classes |\n+Namespaces
    \n+
    lagrange.hh File Reference
    \n \n
    \n-
    #include <dune/localfunctions/utility/multiindex.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \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+Classes

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

    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,27 +1,35 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+_\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 _\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+ _\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+*\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/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: basisprint.hh Source File\n+dune-localfunctions: lagrange.hh Source File\n \n \n \n \n \n \n \n@@ -70,105 +70,90 @@\n \n \n \n \n \n \n \n
    \n-
    basisprint.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 (C) 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+
    5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_LAGRANGE_HH
    \n+
    7
    \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-
    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+\n+\n+\n+
    70 public:
    \n+
    71 typedef typename Base::Traits Traits;
    \n
    72
    \n-
    73
    \n-
    74#endif // BASISPRINT
    \n-\n-\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
    Definition bdfmcube.hh:18
    \n-
    void basisPrint(std::ostream &out, typename BasisFactory::Object &basis)
    Definition basisprint.hh:23
    \n-
    Definition multiindex.hh:37
    \n-
    Definition polynomialbasis.hh:65
    \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:100
    \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,103 +1,92 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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+5#ifndef DUNE_LOCALFUNCTIONS_LAGRANGE_HH\n+6#define DUNE_LOCALFUNCTIONS_LAGRANGE_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+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 typename BasisFactory::Object *basis = BasisFactory::create(key);\n-68 basisPrint(out,*basis);\n-69 BasisFactory::release(basis);\n-70 }\n-71}\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-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+_\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+_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\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+_\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_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh\n+_\bp_\bq_\b2_\b2_\bd_\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_\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+_\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:_\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:37\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_\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:100\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/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: monomialbasis.hh File Reference\n+dune-localfunctions: orthonormal.hh File Reference\n \n \n \n \n \n \n \n@@ -65,60 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n-
    monomialbasis.hh File Reference
    \n+
    orthonormal.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/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 \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::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,49 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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\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/_\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+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- 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:_\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/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: monomialbasis.hh Source File\n+dune-localfunctions: orthonormal.hh Source File\n \n \n \n \n \n \n \n@@ -70,1025 +70,71 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    monomialbasis.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 (C) 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_ORTHONORMALFINITEELEMENT_HH
    \n+
    6#define DUNE_ORTHONORMALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/common/fvector.hh>
    \n-
    11#include <dune/common/fmatrix.hh>
    \n+\n+\n+\n+\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 addiional 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 hight...)
    \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+
    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-
    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:172
    \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:199
    \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,1112 +1,76 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_ORTHONORMALFINITEELEMENT_HH\n+6#define DUNE_ORTHONORMALFINITEELEMENT_HH\n 7\n-8#include \n-9\n-10#include \n-11#include \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-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 addiional 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 hight...)\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-_\bt_\be_\bn_\bs_\bo_\br_\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+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+_\bd_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n+_\bl_\b2_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh\n+_\bo_\br_\bt_\bh_\bo_\bn_\bo_\br_\bm_\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:_\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:172\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:199\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/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: basismatrix.hh File Reference\n+dune-localfunctions: localcoefficients.hh File Reference\n \n \n \n \n \n \n \n@@ -65,43 +65,37 @@\n \n \n \n \n \n \n \n
    \n \n-
    basismatrix.hh File Reference
    \n+
    localcoefficients.hh File Reference
    \n
    \n
    \n-
    #include <fstream>
    \n-#include <dune/common/exceptions.hh>
    \n-#include <dune/localfunctions/utility/lfematrix.hh>
    \n-#include <dune/localfunctions/utility/monomialbasis.hh>
    \n-#include <dune/localfunctions/utility/polynomialbasis.hh>
    \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
    \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 >
     
    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::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": "@@ -1,35 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-basismatrix.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/_\bl_\bf_\be_\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/_\bp_\bo_\bl_\by_\bn_\bo_\bm_\bi_\ba_\bl_\bb_\ba_\bs_\bi_\bs_\b._\bh_\bh>\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 _\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-\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:_\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/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: basismatrix.hh Source File\n+dune-localfunctions: localcoefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,286 +70,102 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    basismatrix.hh
    \n+
    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 (C) 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-
    7
    \n-
    8#include <fstream>
    \n-
    9#include <dune/common/exceptions.hh>
    \n-
    10
    \n-\n-\n-\n+Go to the documentation of this file.
    1// SPDX-FileCopyrightText: Copyright (C) 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+
    12
    \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-
    28
    \n-
    29 template< class PreBasis, class Interpolation,
    \n-
    30 class Field >
    \n-
    \n-
    31 struct BasisMatrixBase : public LFEMatrix<Field>
    \n-
    32 {
    \n-\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
    \n-
    41 if ( !Matrix::invert() )
    \n-
    42 {
    \n-
    43 DUNE_THROW(MathError, "While computing basis a singular matrix was constructed!");
    \n-
    44 }
    \n-
    45 }
    \n-
    \n-
    \n-
    46 unsigned int cols () const
    \n-
    47 {
    \n-
    48 return cols_;
    \n-
    49 }
    \n-
    \n-
    \n-
    50 unsigned int rows () const
    \n-
    51 {
    \n-
    52 return Matrix::rows();
    \n-
    53 }
    \n-
    \n-
    54 private:
    \n-
    55 unsigned int cols_;
    \n-
    56 };
    \n-
    \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 template< GeometryType::Id geometryId, class F,
    \n-
    59 class Interpolation,
    \n-
    60 class Field >
    \n-
    \n-
    61 struct BasisMatrix< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n-
    62 : public BasisMatrixBase< const MonomialBasis< geometryId, F >, Interpolation, Field >
    \n-
    63 {
    \n-\n-\n-
    66 typedef typename Base::Matrix Matrix;
    \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-
    \n-
    68 BasisMatrix( const PreBasis& preBasis,
    \n-
    69 const Interpolation& localInterpolation )
    \n-
    70 : Base(preBasis, localInterpolation)
    \n-
    71 {}
    \n-
    \n-
    72 template <class Vector>
    \n-
    \n-
    73 void row( const unsigned int row, Vector &vec ) const
    \n-
    74 {
    \n-
    75 const unsigned int N = Matrix::rows();
    \n-
    76 assert( Matrix::cols() == N && vec.size() == N );
    \n-
    77 // note: that the transposed matrix is computed,
    \n-
    78 // and is square
    \n-
    79 for (unsigned int i=0; i<N; ++i)
    \n-
    80 field_cast(Matrix::operator()(i,row),vec[i]);
    \n-
    81 }
    \n-
    \n-
    82 };
    \n-
    \n-
    83 template< int dim, class F,
    \n-
    84 class Interpolation,
    \n-
    85 class Field >
    \n-
    \n-
    86 struct BasisMatrix< const Dune::VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n-
    87 : public BasisMatrixBase< const VirtualMonomialBasis< dim, F >, Interpolation, Field >
    \n-
    88 {
    \n-\n-\n-
    91 typedef typename Base::Matrix Matrix;
    \n-
    92
    \n-
    \n-
    93 BasisMatrix( const PreBasis& preBasis,
    \n-
    94 const Interpolation& localInterpolation )
    \n-
    95 : Base(preBasis, localInterpolation)
    \n-
    96 {}
    \n-
    \n-
    97 template <class Vector>
    \n-
    \n-
    98 void row( const unsigned int row, Vector &vec ) const
    \n-
    99 {
    \n-
    100 const unsigned int N = Matrix::rows();
    \n-
    101 assert( Matrix::cols() == N && vec.size() == N );
    \n-
    102 // note: that the transposed matrix is computed,
    \n-
    103 // and is square
    \n-
    104 for (unsigned int i=0; i<N; ++i)
    \n-
    105 field_cast(Matrix::operator()(i,row),vec[i]);
    \n-
    106 }
    \n-
    \n-
    107 };
    \n-
    \n-
    108 template< class Eval, class CM, class D, class R,
    \n-
    109 class Interpolation,
    \n-
    110 class Field >
    \n-
    \n-
    111 struct BasisMatrix< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n-
    112 : public BasisMatrixBase< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
    \n-
    113 {
    \n-\n-\n-
    116 typedef typename Base::Matrix Matrix;
    \n-
    117
    \n-
    \n-
    118 BasisMatrix( const PreBasis& preBasis,
    \n-
    119 const Interpolation& localInterpolation )
    \n-
    120 : Base(preBasis, localInterpolation),
    \n-
    121 preBasis_(preBasis)
    \n-
    122 {}
    \n-
    \n-
    \n-
    123 unsigned int cols() const
    \n-
    124 {
    \n-
    125 return preBasis_.matrix().baseSize() ;
    \n-
    126 }
    \n-
    \n-
    127 template <class Vector>
    \n-
    \n-
    128 void row( const unsigned int row, Vector &vec ) const
    \n-
    129 {
    \n-
    130 assert( Matrix::rows() == Matrix::cols() );
    \n-
    131 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n-
    132 assert( Matrix::cols() == preBasis_.size() );
    \n-
    133 for (unsigned int j=0; j<Matrix::cols(); ++j)
    \n-
    134 vec[j] = 0;
    \n-
    135 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n-
    136 preBasis_.matrix().
    \n-
    137 addRow(i,Base::Matrix::operator()(i,row),vec);
    \n-
    138 }
    \n-
    \n-
    139 private:
    \n-
    140 const PreBasis& preBasis_;
    \n-
    141 };
    \n-
    \n-
    142 template< class Eval, class CM,
    \n-
    143 class Interpolation,
    \n-
    144 class Field >
    \n-
    \n-
    145 struct BasisMatrix< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n-
    146 : public BasisMatrixBase< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
    \n-
    147 {
    \n-\n-\n-
    150 typedef typename Base::Matrix Matrix;
    \n-
    151
    \n-
    \n-
    152 BasisMatrix( const PreBasis& preBasis,
    \n-
    153 const Interpolation& localInterpolation )
    \n-
    154 : Base(preBasis, localInterpolation),
    \n-
    155 preBasis_(preBasis)
    \n-
    156 {}
    \n-
    \n-
    \n-
    157 unsigned int cols() const
    \n-
    158 {
    \n-
    159 return preBasis_.matrix().baseSize() ;
    \n-
    160 }
    \n-
    \n-
    \n-
    161 unsigned int rows () const
    \n-
    162 {
    \n-
    163 assert( Matrix::rows() == preBasis_.matrix().size() );
    \n-
    164 return preBasis_.matrix().size()*CM::blockSize ;
    \n-
    165 }
    \n-
    \n-
    166 template <class Vector>
    \n-
    \n-
    167 void row( const unsigned int row, Vector &vec ) const
    \n-
    168 {
    \n-
    169 unsigned int r = row / CM::blockSize;
    \n-
    170 assert( r < Matrix::rows() );
    \n-
    171 assert( Matrix::rows() == Matrix::cols() );
    \n-
    172 assert( vec.size() == preBasis_.matrix().baseSize() );
    \n-
    173 assert( Matrix::cols() == preBasis_.size() );
    \n-
    174 for (unsigned int j=0; j<vec.size(); ++j)
    \n-
    175 vec[j] = 0;
    \n-
    176 for (unsigned int i=0; i<Matrix::rows(); ++i)
    \n-
    177 preBasis_.matrix().
    \n-
    178 addRow(i*CM::blockSize+row%CM::blockSize,Base::Matrix::operator()(i,r),vec);
    \n-
    179 }
    \n-
    \n-
    180 private:
    \n-
    181 const PreBasis& preBasis_;
    \n-
    182 };
    \n-
    \n-
    183}
    \n-
    184
    \n-
    185#endif // DUNE_BASISMATRIX_HH
    \n-\n-\n-\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-
    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:46
    \n-
    unsigned int rows() const
    Definition basismatrix.hh:50
    \n-
    BasisMatrixBase(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:35
    \n-
    LFEMatrix< Field > Matrix
    Definition basismatrix.hh:33
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:73
    \n-
    const MonomialBasis< geometryId, F > PreBasis
    Definition basismatrix.hh:64
    \n-\n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:68
    \n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:65
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:98
    \n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:90
    \n-\n-
    const VirtualMonomialBasis< dim, F > PreBasis
    Definition basismatrix.hh:89
    \n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:93
    \n-\n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:115
    \n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:118
    \n-\n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:128
    \n-
    const PolynomialBasis< Eval, CM, D, R > PreBasis
    Definition basismatrix.hh:114
    \n-
    const PolynomialBasisWithMatrix< Eval, CM > PreBasis
    Definition basismatrix.hh:148
    \n-
    BasisMatrixBase< PreBasis, Interpolation, Field > Base
    Definition basismatrix.hh:149
    \n-\n-\n-
    BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
    Definition basismatrix.hh:152
    \n-
    void row(const unsigned int row, Vector &vec) const
    Definition basismatrix.hh:167
    \n-\n-
    Definition lfematrix.hh:18
    \n-
    unsigned int rows() const
    Definition lfematrix.hh:58
    \n-
    bool invert()
    Definition lfematrix.hh:89
    \n-
    Field Field
    Definition lfematrix.hh:24
    \n-
    Definition monomialbasis.hh:440
    \n-
    Definition monomialbasis.hh:612
    \n-
    Definition polynomialbasis.hh:65
    \n-
    Definition polynomialbasis.hh:348
    \n+
    Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
    Definition localcoefficients.hh:33
    \n+
    BDFMCubeLocalCoefficients()
    Standard constructor.
    Definition localcoefficients.hh:42
    \n+
    std::size_t size() const
    number of coefficients
    Definition localcoefficients.hh:53
    \n+
    auto localKey(std::size_t i) const -> const LocalKey &
    geth i'th index
    Definition localcoefficients.hh:56
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,344 +1,111 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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+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 (C) DUNE Project contributors, see file\n+1// SPDX-FileCopyrightText: Copyright (C) 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-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/_\bl_\bf_\be_\bm_\ba_\bt_\br_\bi_\bx_\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#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+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+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-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-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 _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx\n-32 {\n-_\b3_\b3 typedef _\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\bF_\bi_\be_\bl_\bd_\b> _\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\n-41 if ( !_\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\bi_\bn_\bv_\be_\br_\bt() )\n-42 {\n-43 DUNE_THROW(MathError, \"While computing basis a singular matrix was\n-constructed!\");\n-44 }\n-45 }\n-_\b4_\b6 unsigned int _\bc_\bo_\bl_\bs () const\n-47 {\n-48 return cols_;\n-49 }\n-_\b5_\b0 unsigned int _\br_\bo_\bw_\bs () const\n-51 {\n-52 return _\bM_\ba_\bt_\br_\bi_\bx_\b:_\b:_\br_\bo_\bw_\bs();\n-53 }\n-54 private:\n-55 unsigned int cols_;\n-56 };\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 template< GeometryType::Id geometryId, class F,\n-59 class Interpolation,\n-60 class Field >\n-_\b6_\b1 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-_\bF_\bi_\be_\bl_\bd >\n-62 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const MonomialBasis< geometryId, F >,\n-Interpolation, Field >\n-63 {\n-_\b6_\b4 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_\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-_\b6_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\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-_\b6_\b8 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-69 const Interpolation& localInterpolation )\n-70 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n-71 {}\n-72 template \n-_\b7_\b3 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-74 {\n-75 const unsigned int N = Matrix::rows();\n-76 assert( Matrix::cols() == N && vec.size() == N );\n-77 // note: that the transposed matrix is computed,\n-78 // and is square\n-79 for (unsigned int i=0; i\n-_\b8_\b6 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, _\bF_\bi_\be_\bl_\bd >\n-87 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const VirtualMonomialBasis< dim, F >,\n-Interpolation, Field >\n-88 {\n-_\b8_\b9 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-_\b9_\b0 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-_\b9_\b1 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n-92\n-_\b9_\b3 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-94 const Interpolation& localInterpolation )\n-95 : _\bB_\ba_\bs_\be(preBasis, localInterpolation)\n-96 {}\n-97 template \n-_\b9_\b8 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-99 {\n-100 const unsigned int N = Matrix::rows();\n-101 assert( Matrix::cols() == N && vec.size() == N );\n-102 // note: that the transposed matrix is computed,\n-103 // and is square\n-104 for (unsigned int i=0; i\n-_\b1_\b1_\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, Interpolation,\n-_\bF_\bi_\be_\bl_\bd >\n-112 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasis,\n-Interpolation, Field >\n-113 {\n-_\b1_\b1_\b4 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_\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_\b1_\b6 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n-117\n-_\b1_\b1_\b8 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-119 const Interpolation& localInterpolation )\n-120 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n-121 preBasis_(preBasis)\n-122 {}\n-_\b1_\b2_\b3 unsigned int _\bc_\bo_\bl_\bs() const\n-124 {\n-125 return preBasis_.matrix().baseSize() ;\n-126 }\n-127 template \n-_\b1_\b2_\b8 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-129 {\n-130 assert( Matrix::rows() == Matrix::cols() );\n-131 assert( vec.size() == preBasis_.matrix().baseSize() );\n-132 assert( Matrix::cols() == preBasis_.size() );\n-133 for (unsigned int j=0; j\n-_\b1_\b4_\b5 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, _\bF_\bi_\be_\bl_\bd >\n-146 : public _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx_\bB_\ba_\bs_\be< const PolynomialBasisWithMatrix,\n-Interpolation, Field >\n-147 {\n-_\b1_\b4_\b8 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_\b9 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_\b5_\b0 typedef typename _\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx _\bM_\ba_\bt_\br_\bi_\bx;\n-151\n-_\b1_\b5_\b2 _\bB_\ba_\bs_\bi_\bs_\bM_\ba_\bt_\br_\bi_\bx( const _\bP_\br_\be_\bB_\ba_\bs_\bi_\bs& preBasis,\n-153 const Interpolation& localInterpolation )\n-154 : _\bB_\ba_\bs_\be(preBasis, localInterpolation),\n-155 preBasis_(preBasis)\n-156 {}\n-_\b1_\b5_\b7 unsigned int _\bc_\bo_\bl_\bs() const\n-158 {\n-159 return preBasis_.matrix().baseSize() ;\n-160 }\n-_\b1_\b6_\b1 unsigned int _\br_\bo_\bw_\bs () const\n-162 {\n-163 assert( Matrix::rows() == preBasis_.matrix().size() );\n-164 return preBasis_.matrix().size()*CM::blockSize ;\n-165 }\n-166 template \n-_\b1_\b6_\b7 void _\br_\bo_\bw( const unsigned int row, Vector &vec ) const\n-168 {\n-169 unsigned int r = row / CM::blockSize;\n-170 assert( r < Matrix::rows() );\n-171 assert( Matrix::rows() == Matrix::cols() );\n-172 assert( vec.size() == preBasis_.matrix().baseSize() );\n-173 assert( Matrix::cols() == preBasis_.size() );\n-174 for (unsigned int j=0; j\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:_\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: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:_\br_\bo_\bw_\bs\n-unsigned int rows() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:50\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_\bB_\ba_\bs_\be_\b:_\b:_\bM_\ba_\bt_\br_\bi_\bx\n-LFEMatrix< 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_\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:73\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: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:_\bM_\ba_\bt_\br_\bi_\bx\n-Base::Matrix Matrix\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:66\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:68\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:65\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:98\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:90\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:91\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: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 _\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:93\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:116\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:115\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:118\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:123\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:128\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: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_\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: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:_\bB_\ba_\bs_\be\n-BasisMatrixBase< PreBasis, Interpolation, Field > Base\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn basismatrix.hh:149\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:161\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:150\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:152\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:167\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:157\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 _\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 lfematrix.hh:58\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\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:89\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bF_\bE_\bM_\ba_\bt_\br_\bi_\bx_\b<_\b _\bF_\bi_\be_\bl_\bd_\b _\b>_\b:_\b:_\bF_\bi_\be_\bl_\bd\n-Field Field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lfematrix.hh:24\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:_\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 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 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 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 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: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/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: brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference\n+dune-localfunctions: bdfmcube.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+
    bdfmcube.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::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,23 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1cube3dlocalinterpolation.hh File Reference\n-#include \n-#include \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 _\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:_\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/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: brezzidouglasmarini1cube3dlocalinterpolation.hh Source File\n+dune-localfunctions: bdfmcube.hh Source File\n \n \n \n \n \n \n \n@@ -70,134 +70,95 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube3dlocalinterpolation.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 (C) 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_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8#include <dune/geometry/type.hh>
    \n
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n+\n
    11
    \n-
    12namespace Dune
    \n-
    13{
    \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+\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+\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+
    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 localcoefficients.hh:33
    \n+
    Interpolation for Brezzi-Douglas-Fortin-Marini shape functions on cubes.
    Definition brezzidouglasfortinmarini/cube/localinterpolation.hh:38
    \n+
    traits helper struct
    Definition localfiniteelementtraits.hh:13
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,134 +1,114 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_BDFMCUBE_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_\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-12namespace _\bD_\bu_\bn_\be\n-13{\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-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-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+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_\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 _\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:_\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 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 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 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: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+_\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 ===============================================================================\n 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: brezzidouglasmarinisimplex.hh File Reference\n+dune-localfunctions: hierarchicalprismp2.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-
    brezzidouglasmarinisimplex.hh File Reference
    \n+
    hierarchicalprismp2.hh File Reference
    \n
    \n
    \n-
    #include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh>
    \n-#include <dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.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::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 1 >
     Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 1. More...
     
    class  Dune::BrezziDouglasMariniSimplexLocalFiniteElement< D, R, 2, 2 >
     Brezzi-Douglas-Marini local finite elements for simplices with dimension 2 and order 2. More...
    class  Dune::HierarchicalPrismP2LocalFiniteElement< D, R >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,23 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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/_\bl_\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 _\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-\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:_\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/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: brezzidouglasmarinisimplex.hh Source File\n+dune-localfunctions: hierarchicalprismp2.hh Source File\n \n \n \n \n \n \n \n@@ -70,88 +70,122 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarinisimplex.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 (C) 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_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH
    \n
    7
    \n-\n-\n-
    10
    \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+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \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+\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+
    Hierarchical prism p2 shape functions for the simplex.
    \n+\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+
    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:18
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,93 +1,132 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_HIERARCHICAL_PRISM_P2_LOCALFINITEELEMENT_HH\n+6#define DUNE_HIERARCHICAL_PRISM_P2_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/_\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\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+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+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+_\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+_\bl_\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_\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+_\bD_\bu_\bn_\be_\b:_\b:_\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:18\n ===============================================================================\n 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: brezzidouglasmarini1simplex2dlocalbasis.hh File Reference\n+dune-localfunctions: hierarchicalsimplexp2withelementbubble.hh File Reference\n \n \n \n \n \n \n \n@@ -65,44 +65,63 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1simplex2dlocalbasis.hh File Reference
    \n+
    hierarchicalsimplexp2withelementbubble.hh File Reference
    \n
    \n
    \n-
    #include <array>
    \n-#include <bitset>
    \n-#include <numeric>
    \n+\n+

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

    \n+
    #include <numeric>
    \n #include <vector>
    \n+#include <dune/common/fvector.hh>
    \n #include <dune/common/fmatrix.hh>
    \n-#include "../../common/localbasis.hh"
    \n+#include <dune/localfunctions/common/localbasis.hh>
    \n+#include <dune/localfunctions/common/localkey.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.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::BDM1Simplex2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference triangle. More...
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim >
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 1 >
     Hierarchical P2 basis in 1d. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 2 >
     Hierarchical P2 basis in 1d. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 3 >
     Hierarchical P2 basis in 1d. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >
     The local finite element needed for the Zou-Kornhuber estimator for Signorini problems. More...
     
    class  Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LB >
     
    \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,27 +1,44 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1simplex2dlocalbasis.hh File Reference\n-#include \n-#include \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 \"_\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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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_\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_\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:_\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\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 _\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_\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 _\b2_\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_\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 _\b3_\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_\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 finite element needed for the Zou-Kornhuber estimator for\n+ Signorini problems. _\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>\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/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: brezzidouglasmarini1simplex2dlocalbasis.hh Source File\n+dune-localfunctions: hierarchicalsimplexp2withelementbubble.hh Source File\n \n \n \n \n \n \n \n@@ -70,215 +70,496 @@\n \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2dlocalbasis.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 (C) 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_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 <bitset>
    \n-
    10#include <numeric>
    \n-
    11#include <vector>
    \n-
    12
    \n-
    13#include <dune/common/fmatrix.hh>
    \n+
    12#include <numeric>
    \n+
    13#include <vector>
    \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-
    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-
    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+
    15#include <dune/common/fvector.hh>
    \n+
    16#include <dune/common/fmatrix.hh>
    \n+
    17
    \n+\n+\n+\n+
    21
    \n+
    22namespace Dune
    \n+
    23{
    \n+
    24 template<class D, class R, int dim>
    \n+
    \n+\n+
    26 {
    \n+
    27 public:
    \n+
    \n+\n+
    29 {
    \n+
    30 DUNE_THROW(Dune::NotImplemented,"HierarchicalSimplexP2LocalBasis not implemented for dim > 3.");
    \n+
    31 }
    \n+
    \n+
    32 };
    \n+
    \n+
    33
    \n+
    48 template<class D, class R>
    \n+
    \n+\n+
    50 {
    \n+
    51 public:
    \n+
    53 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n+
    54 Dune::FieldMatrix<R,1,1> > Traits;
    \n+
    55
    \n+
    \n+
    57 unsigned int size () const
    \n+
    58 {
    \n+
    59 return 3;
    \n+
    60 }
    \n+
    \n+
    61
    \n+
    \n+
    63 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    64 std::vector<typename Traits::RangeType>& out) const
    \n+
    65 {
    \n+
    66 out.resize(3);
    \n+
    67
    \n+
    68 out[0] = 1-in[0];
    \n+
    69 out[1] = in[0];
    \n+
    70 out[2] = 1-4*(in[0]-0.5)*(in[0]-0.5);
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    74 inline void
    \n+
    \n+
    75 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    76 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    77 {
    \n+
    78 out.resize(3);
    \n+
    79
    \n+
    80 out[0][0][0] = -1;
    \n+
    81 out[1][0][0] = 1;
    \n+
    82 out[2][0][0] = 4-8*in[0];
    \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+
    \n+
    86 void partial (const std::array<unsigned int, 1>& order,
    \n+
    87 const typename Traits::DomainType& in, // position
    \n+
    88 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    89 {
    \n+
    90 auto totalOrder = order[0];
    \n+
    91 if (totalOrder == 0) {
    \n+
    92 evaluateFunction(in, out);
    \n+
    93 } else if (totalOrder == 1) {
    \n+
    94 out.resize(size());
    \n+
    95 out[0] = -1;
    \n+
    96 out[1] = 1;
    \n+
    97 out[2] = 4-8*in[0];
    \n+
    98 } else if (totalOrder == 2) {
    \n+
    99 out.resize(size());
    \n+
    100 out[0] = 0;
    \n+
    101 out[1] = 0;
    \n+
    102 out[2] =-8;
    \n+
    103 } else {
    \n+
    104 out.resize(size());
    \n+
    105 out[0] = out[1] = out[2] = 0;
    \n+
    106 }
    \n+
    107 }
    \n+
    \n+
    108
    \n+
    \n+
    111 unsigned int order () const
    \n+
    112 {
    \n+
    113 return 2;
    \n+
    114 }
    \n+
    \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+
    116 };
    \n+
    \n+
    117
    \n+
    138 template<class D, class R>
    \n+
    \n+\n+
    140 {
    \n+
    141 public:
    \n+
    143 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n+
    144 Dune::FieldMatrix<R,1,2> > Traits;
    \n+
    145
    \n+
    \n+
    147 unsigned int size () const
    \n+
    148 {
    \n+
    149 return 7;
    \n+
    150 }
    \n+
    \n+
    151
    \n+
    \n+
    153 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    154 std::vector<typename Traits::RangeType>& out) const
    \n+
    155 {
    \n+
    156 out.resize(7);
    \n+
    157
    \n+
    158 out[0] = 1 - in[0] - in[1];
    \n+
    159 out[1] = 4*in[0]*(1-in[0]-in[1]);
    \n+
    160 out[2] = in[0];
    \n+
    161 out[3] = 4*in[1]*(1-in[0]-in[1]);
    \n+
    162 out[4] = 4*in[0]*in[1];
    \n+
    163 out[5] = in[1];
    \n+
    164 out[6] = 27*in[0]*in[1]*(1-in[0]-in[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+
    166 }
    \n
    \n+
    167
    \n+
    169 inline void
    \n+
    \n+
    170 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    171 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    172 {
    \n+
    173 out.resize(7);
    \n+
    174
    \n+
    175 out[0][0][0] = -1; out[0][0][1] = -1;
    \n+
    176 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];
    \n+
    177 out[2][0][0] = 1; out[2][0][1] = 0;
    \n+
    178 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];
    \n+
    179 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];
    \n+
    180 out[5][0][0] = 0; out[5][0][1] = 1;
    \n+
    181
    \n+
    182 // Cubic bubble
    \n+
    183 out[6][0][0] = 27 * in[1] * (1 - 2*in[0] - in[1]);
    \n+
    184 out[6][0][1] = 27 * in[0] * (1 - 2*in[1] - in[0]);
    \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+
    186 }
    \n
    \n-
    195}
    \n-
    196#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALBASIS_HH
    \n+
    187
    \n+
    \n+
    189 void partial (const std::array<unsigned int, 2>& order,
    \n+
    190 const typename Traits::DomainType& in, // position
    \n+
    191 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    192 {
    \n+
    193 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    194 if (totalOrder == 0) {
    \n+
    195 evaluateFunction(in, out);
    \n+
    196 } else if (totalOrder == 1) {
    \n+
    197 out.resize(size());
    \n+
    198 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    199
    \n+
    200 switch (direction) {
    \n+
    201 case 0:
    \n+
    202 out[0] = -1;
    \n+
    203 out[1] = 4-8*in[0]-4*in[1];
    \n+
    204 out[2] = 1;
    \n+
    205 out[3] = -4*in[1];
    \n+
    206 out[4] = 4*in[1];
    \n+
    207 out[5] = 0;
    \n+
    208 out[6] = 27 * in[1] * (1 - 2*in[0] - in[1]);
    \n+
    209 break;
    \n+
    210 case 1:
    \n+
    211 out[0] = -1;
    \n+
    212 out[1] = -4*in[0];
    \n+
    213 out[2] = 0;
    \n+
    214 out[3] = 4-4*in[0]-8*in[1];
    \n+
    215 out[4] = 4*in[0];
    \n+
    216 out[5] = 1;
    \n+
    217 out[6] = 27 * in[0] * (1 - 2*in[1] - in[0]);
    \n+
    218 break;
    \n+
    219 default:
    \n+
    220 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    221 }
    \n+
    222 } else {
    \n+
    223 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    224 }
    \n+
    225 }
    \n+
    \n+
    226
    \n+
    \n+
    229 unsigned int order () const
    \n+
    230 {
    \n+
    231 return 3;
    \n+
    232 }
    \n+
    \n+
    233
    \n+
    234 };
    \n+
    \n+
    235
    \n+
    260 template<class D, class R>
    \n+
    \n+\n+
    262 {
    \n+
    263 public:
    \n+
    265 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n+
    266 Dune::FieldMatrix<R,1,3> > Traits;
    \n+
    267
    \n+
    \n+
    269 unsigned int size () const
    \n+
    270 {
    \n+
    271 return 11;
    \n+
    272 }
    \n+
    \n+
    273
    \n+
    \n+
    275 void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    276 std::vector<typename Traits::RangeType>& out) const
    \n+
    277 {
    \n+
    278 out.resize(10);
    \n+
    279
    \n+
    280 out[0] = 1 - in[0] - in[1] - in[2];
    \n+
    281 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);
    \n+
    282 out[2] = in[0];
    \n+
    283 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);
    \n+
    284 out[4] = 4 * in[0] * in[1];
    \n+
    285 out[5] = in[1];
    \n+
    286 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);
    \n+
    287 out[7] = 4 * in[0] * in[2];
    \n+
    288 out[8] = 4 * in[1] * in[2];
    \n+
    289 out[9] = in[2];
    \n+
    290
    \n+
    291 // quartic element bubble
    \n+
    292 out[10] = 81*in[0]*in[1]*in[2]*(1-in[0]-in[1]-in[2]);
    \n+
    293 }
    \n+
    \n+
    294
    \n+
    \n+
    296 void evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    297 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    298 {
    \n+
    299 out.resize(10);
    \n+
    300
    \n+
    301 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;
    \n+
    302 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+
    303 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    304 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+
    305 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;
    \n+
    306 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;
    \n+
    307 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+
    308 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];
    \n+
    309 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];
    \n+
    310 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;
    \n+
    311
    \n+
    312 out[10][0][0] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);
    \n+
    313 out[10][0][1] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);
    \n+
    314 out[10][0][2] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);
    \n+
    315 }
    \n+
    \n+
    316
    \n+
    \n+
    318 void partial (const std::array<unsigned int, 3>& order,
    \n+
    319 const typename Traits::DomainType& in, // position
    \n+
    320 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    321 {
    \n+
    322 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    323 if (totalOrder == 0) {
    \n+
    324 evaluateFunction(in, out);
    \n+
    325 } else if (totalOrder == 1) {
    \n+
    326 out.resize(size());
    \n+
    327 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    328
    \n+
    329 switch (direction) {
    \n+
    330 case 0:
    \n+
    331 out[0] = -1;
    \n+
    332 out[1] = 4-8*in[0]-4*in[1]-4*in[2];
    \n+
    333 out[2] = 1;
    \n+
    334 out[3] = -4*in[1];
    \n+
    335 out[4] = 4*in[1];
    \n+
    336 out[5] = 0;
    \n+
    337 out[6] = -4*in[2];
    \n+
    338 out[7] = 4*in[2];
    \n+
    339 out[8] = 0;
    \n+
    340 out[9] = 0;
    \n+
    341 out[10] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);
    \n+
    342 break;
    \n+
    343 case 1:
    \n+
    344 out[0] = -1;
    \n+
    345 out[1] = -4*in[0];
    \n+
    346 out[2] = 0;
    \n+
    347 out[3] = 4-4*in[0]-8*in[1]-4*in[2];
    \n+
    348 out[4] = 4*in[0];
    \n+
    349 out[5] = 1;
    \n+
    350 out[6] = -4*in[2];
    \n+
    351 out[7] = 0;
    \n+
    352 out[8] = 4*in[2];
    \n+
    353 out[9] = 0;
    \n+
    354 out[10] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);
    \n+
    355 break;
    \n+
    356 case 2:
    \n+
    357 out[0] = -1;
    \n+
    358 out[1] = -4*in[0];
    \n+
    359 out[2] = 0;
    \n+
    360 out[3] = -4*in[1];
    \n+
    361 out[4] = 0;
    \n+
    362 out[5] = 0;
    \n+
    363 out[6] = 4-4*in[0]-4*in[1]-8*in[2];
    \n+
    364 out[7] = 4*in[0];
    \n+
    365 out[8] = 4*in[1];
    \n+
    366 out[9] = 1;
    \n+
    367 out[10] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);
    \n+
    368 break;
    \n+
    369 default:
    \n+
    370 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    371 }
    \n+
    372 } else {
    \n+
    373 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    374 }
    \n+
    375 }
    \n+
    \n+
    376
    \n+
    \n+
    379 unsigned int order () const
    \n+
    380 {
    \n+
    381 return 4;
    \n+
    382 }
    \n+
    \n+
    383
    \n+
    384 };
    \n+
    \n+
    385
    \n+
    386
    \n+
    412 template <int dim>
    \n+
    \n+\n+
    414 {
    \n+
    415 // The binomial coefficient: dim+1 over 1
    \n+
    416 static const int numVertices = dim+1;
    \n+
    417
    \n+
    418 // The binomial coefficient: dim+1 over 2
    \n+
    419 static const int numEdges = (dim+1)*dim / 2;
    \n+
    420
    \n+
    421 public:
    \n+
    \n+\n+
    424 : li(numVertices+numEdges + 1)
    \n+
    425 {
    \n+
    426 if (dim!=2)
    \n+
    427 DUNE_THROW(NotImplemented, "only for 2d");
    \n+
    428
    \n+
    429 li[0] = Dune::LocalKey(0,2,0); // Vertex (0,0)
    \n+
    430 li[1] = Dune::LocalKey(0,1,0); // Edge (0.5, 0)
    \n+
    431 li[2] = Dune::LocalKey(1,2,0); // Vertex (1,0)
    \n+
    432 li[3] = Dune::LocalKey(1,1,0); // Edge (0, 0.5)
    \n+
    433 li[4] = Dune::LocalKey(2,1,0); // Edge (0.5, 0.5)
    \n+
    434 li[5] = Dune::LocalKey(2,2,0); // Vertex (0,1)
    \n+
    435 li[6] = Dune::LocalKey(0,0,0); // Element (1/3, 1/3)
    \n+
    436 }
    \n+
    \n+
    437
    \n+
    \n+
    439 size_t size () const
    \n+
    440 {
    \n+
    441 return numVertices+numEdges + 1;
    \n+
    442 }
    \n+
    \n+
    443
    \n+
    \n+
    445 const Dune::LocalKey& localKey (size_t i) const
    \n+
    446 {
    \n+
    447 return li[i];
    \n+
    448 }
    \n+
    \n+
    449
    \n+
    450 private:
    \n+
    451 std::vector<Dune::LocalKey> li;
    \n+
    452 };
    \n+
    \n+
    453
    \n+
    454 template<class LB>
    \n+
    \n+\n+
    456 {
    \n+
    457 public:
    \n+
    458
    \n+
    460 template<typename F, typename C>
    \n+
    \n+
    461 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    462 {
    \n+
    463 typename LB::Traits::DomainType x;
    \n+
    464 typename LB::Traits::RangeType y;
    \n+
    465
    \n+
    466 out.resize(7);
    \n+
    467
    \n+
    468 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n+
    469
    \n+
    470 // vertices
    \n+
    471 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);
    \n+
    472 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);
    \n+
    473 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);
    \n+
    474
    \n+
    475 // edge bubbles
    \n+
    476 x[0] = 0.5; x[1] = 0.0; y = f(x);
    \n+
    477 out[1] = y - out[0]*(1-x[0]) - out[2]*x[0];
    \n+
    478
    \n+
    479 x[0] = 0.0; x[1] = 0.5; y = f(x);
    \n+
    480 out[3] = y - out[0]*(1-x[1]) - out[5]*x[1];
    \n+
    481
    \n+
    482 x[0] = 0.5; x[1] = 0.5; y = f(x);
    \n+
    483 out[4] = y - out[2]*x[0] - out[5]*x[1];
    \n+
    484
    \n+
    485 // element bubble
    \n+
    486 x[0] = 1.0/3; x[1] = 1.0/3; y = f(x);
    \n+
    487
    \n+\n+
    490 std::vector<typename LB::Traits::RangeType> sfValues;
    \n+
    491 shapeFunctions.evaluateFunction(x, sfValues);
    \n+
    492
    \n+
    493 out[6] = y;
    \n+
    494 for (int i=0; i<6; i++)
    \n+
    495 out[6] -= out[i]*sfValues[i];
    \n+
    496
    \n+
    497 }
    \n+
    \n+
    498
    \n+
    499 };
    \n+
    \n+
    500
    \n+
    501
    \n+
    502}
    \n+
    503#endif
    \n+\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:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    Definition hierarchicalsimplexp2withelementbubble.hh:26
    \n+
    HierarchicalSimplexP2WithElementBubbleLocalBasis()
    Definition hierarchicalsimplexp2withelementbubble.hh:28
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:75
    \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 hierarchicalsimplexp2withelementbubble.hh:54
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:63
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (2, in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:111
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2withelementbubble.hh:57
    \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 hierarchicalsimplexp2withelementbubble.hh:86
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2withelementbubble.hh:147
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (3 in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:229
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:153
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:170
    \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 hierarchicalsimplexp2withelementbubble.hh:189
    \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 hierarchicalsimplexp2withelementbubble.hh:144
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2withelementbubble.hh:269
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:275
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (4 in this case)
    Definition hierarchicalsimplexp2withelementbubble.hh:379
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2withelementbubble.hh:296
    \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 hierarchicalsimplexp2withelementbubble.hh:318
    \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 hierarchicalsimplexp2withelementbubble.hh:266
    \n+
    The local finite element needed for the Zou-Kornhuber estimator for Signorini problems.
    Definition hierarchicalsimplexp2withelementbubble.hh:414
    \n+
    size_t size() const
    number of coefficients
    Definition hierarchicalsimplexp2withelementbubble.hh:439
    \n+
    const Dune::LocalKey & localKey(size_t i) const
    get i'th index
    Definition hierarchicalsimplexp2withelementbubble.hh:445
    \n+
    HierarchicalSimplexP2WithElementBubbleLocalCoefficients()
    Standard constructor.
    Definition hierarchicalsimplexp2withelementbubble.hh:423
    \n+
    Definition hierarchicalsimplexp2withelementbubble.hh:456
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Local interpolation of a function.
    Definition hierarchicalsimplexp2withelementbubble.hh:461
    \n+\n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,228 +1,547 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_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#include \n-11#include \n-12\n-13#include \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-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_\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_\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+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_\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_\bk_\be_\by_\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+21\n+22namespace _\bD_\bu_\bn_\be\n+23{\n+24 template\n+_\b2_\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+26 {\n+27 public:\n+_\b2_\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_\bB_\ba_\bs_\bi_\bs()\n+29 {\n+30 DUNE_THROW(Dune::NotImplemented,\"HierarchicalSimplexP2LocalBasis not\n+implemented for dim > 3.\");\n+31 }\n+32 };\n+33\n+48 template\n+_\b4_\b9 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+50 {\n+51 public:\n+53 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_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+55\n+_\b5_\b7 unsigned int _\bs_\bi_\bz_\be () const\n+58 {\n+59 return 3;\n+60 }\n+61\n+_\b6_\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+64 std::vector& out) const\n+65 {\n+66 out.resize(3);\n+67\n+68 out[0] = 1-in[0];\n+69 out[1] = in[0];\n+70 out[2] = 1-4*(in[0]-0.5)*(in[0]-0.5);\n+71 }\n+72\n+74 inline void\n+_\b7_\b5 _\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+76 std::vector& out) const // return value\n+77 {\n+78 out.resize(3);\n+79\n+80 out[0][0][0] = -1;\n+81 out[1][0][0] = 1;\n+82 out[2][0][0] = 4-8*in[0];\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+_\b8_\b6 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+87 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+88 std::vector& out) const // return value\n+89 {\n+90 auto totalOrder = order[0];\n+91 if (totalOrder == 0) {\n+92 evaluateFunction(in, out);\n+93 } else if (totalOrder == 1) {\n+94 out.resize(size());\n+95 out[0] = -1;\n+96 out[1] = 1;\n+97 out[2] = 4-8*in[0];\n+98 } else if (totalOrder == 2) {\n+99 out.resize(size());\n+100 out[0] = 0;\n+101 out[1] = 0;\n+102 out[2] =-8;\n+103 } else {\n+104 out.resize(size());\n+105 out[0] = out[1] = out[2] = 0;\n+106 }\n+107 }\n+108\n+_\b1_\b1_\b1 unsigned int _\bo_\br_\bd_\be_\br () const\n+112 {\n+113 return 2;\n+114 }\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+116 };\n+117\n+138 template\n+_\b1_\b3_\b9 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+140 {\n+141 public:\n+143 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_\b4 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+145\n+_\b1_\b4_\b7 unsigned int _\bs_\bi_\bz_\be () const\n+148 {\n+149 return 7;\n+150 }\n+151\n+_\b1_\b5_\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+154 std::vector& out) const\n+155 {\n+156 out.resize(7);\n+157\n+158 out[0] = 1 - in[0] - in[1];\n+159 out[1] = 4*in[0]*(1-in[0]-in[1]);\n+160 out[2] = in[0];\n+161 out[3] = 4*in[1]*(1-in[0]-in[1]);\n+162 out[4] = 4*in[0]*in[1];\n+163 out[5] = in[1];\n+164 out[6] = 27*in[0]*in[1]*(1-in[0]-in[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+166 }\n+167\n+169 inline void\n+_\b1_\b7_\b0 _\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+171 std::vector& out) const // return value\n+172 {\n+173 out.resize(7);\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+175 out[0][0][0] = -1; out[0][0][1] = -1;\n+176 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];\n+177 out[2][0][0] = 1; out[2][0][1] = 0;\n+178 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];\n+179 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];\n+180 out[5][0][0] = 0; out[5][0][1] = 1;\n+181\n+182 // Cubic bubble\n+183 out[6][0][0] = 27 * in[1] * (1 - 2*in[0] - in[1]);\n+184 out[6][0][1] = 27 * in[0] * (1 - 2*in[1] - in[0]);\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+186 }\n+187\n+_\b1_\b8_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+190 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+191 std::vector& out) const // return value\n+192 {\n+193 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+194 if (totalOrder == 0) {\n+195 evaluateFunction(in, out);\n+196 } else if (totalOrder == 1) {\n+197 out.resize(size());\n+198 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+199\n+200 switch (direction) {\n+201 case 0:\n+202 out[0] = -1;\n+203 out[1] = 4-8*in[0]-4*in[1];\n+204 out[2] = 1;\n+205 out[3] = -4*in[1];\n+206 out[4] = 4*in[1];\n+207 out[5] = 0;\n+208 out[6] = 27 * in[1] * (1 - 2*in[0] - in[1]);\n+209 break;\n+210 case 1:\n+211 out[0] = -1;\n+212 out[1] = -4*in[0];\n+213 out[2] = 0;\n+214 out[3] = 4-4*in[0]-8*in[1];\n+215 out[4] = 4*in[0];\n+216 out[5] = 1;\n+217 out[6] = 27 * in[0] * (1 - 2*in[1] - in[0]);\n+218 break;\n+219 default:\n+220 DUNE_THROW(RangeError, \"Component out of range.\");\n+221 }\n+222 } else {\n+223 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+224 }\n+225 }\n+226\n+_\b2_\b2_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+230 {\n+231 return 3;\n+232 }\n+233\n+234 };\n+235\n+260 template\n+_\b2_\b6_\b1 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+262 {\n+263 public:\n+265 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_\b6_\b6 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+267\n+_\b2_\b6_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+270 {\n+271 return 11;\n+272 }\n+273\n+_\b2_\b7_\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+276 std::vector& out) const\n+277 {\n+278 out.resize(10);\n+279\n+280 out[0] = 1 - in[0] - in[1] - in[2];\n+281 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);\n+282 out[2] = in[0];\n+283 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);\n+284 out[4] = 4 * in[0] * in[1];\n+285 out[5] = in[1];\n+286 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);\n+287 out[7] = 4 * in[0] * in[2];\n+288 out[8] = 4 * in[1] * in[2];\n+289 out[9] = in[2];\n+290\n+291 // quartic element bubble\n+292 out[10] = 81*in[0]*in[1]*in[2]*(1-in[0]-in[1]-in[2]);\n+293 }\n+294\n+_\b2_\b9_\b6 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+297 std::vector& out) const // return value\n+298 {\n+299 out.resize(10);\n+300\n+301 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;\n+302 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+303 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;\n+304 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+305 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;\n+306 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;\n+307 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+308 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];\n+309 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];\n+310 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;\n+311\n+312 out[10][0][0] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);\n+313 out[10][0][1] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);\n+314 out[10][0][2] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);\n+315 }\n+316\n+_\b3_\b1_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+319 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+320 std::vector& out) const // return value\n+321 {\n+322 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+323 if (totalOrder == 0) {\n+324 evaluateFunction(in, out);\n+325 } else if (totalOrder == 1) {\n+326 out.resize(size());\n+327 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+328\n+329 switch (direction) {\n+330 case 0:\n+331 out[0] = -1;\n+332 out[1] = 4-8*in[0]-4*in[1]-4*in[2];\n+333 out[2] = 1;\n+334 out[3] = -4*in[1];\n+335 out[4] = 4*in[1];\n+336 out[5] = 0;\n+337 out[6] = -4*in[2];\n+338 out[7] = 4*in[2];\n+339 out[8] = 0;\n+340 out[9] = 0;\n+341 out[10] = 81 * in[1] * in[2] * (1 - 2*in[0] - in[1] - in[2]);\n+342 break;\n+343 case 1:\n+344 out[0] = -1;\n+345 out[1] = -4*in[0];\n+346 out[2] = 0;\n+347 out[3] = 4-4*in[0]-8*in[1]-4*in[2];\n+348 out[4] = 4*in[0];\n+349 out[5] = 1;\n+350 out[6] = -4*in[2];\n+351 out[7] = 0;\n+352 out[8] = 4*in[2];\n+353 out[9] = 0;\n+354 out[10] = 81 * in[0] * in[2] * (1 - in[0] - 2*in[1] - in[2]);\n+355 break;\n+356 case 2:\n+357 out[0] = -1;\n+358 out[1] = -4*in[0];\n+359 out[2] = 0;\n+360 out[3] = -4*in[1];\n+361 out[4] = 0;\n+362 out[5] = 0;\n+363 out[6] = 4-4*in[0]-4*in[1]-8*in[2];\n+364 out[7] = 4*in[0];\n+365 out[8] = 4*in[1];\n+366 out[9] = 1;\n+367 out[10] = 81 * in[0] * in[1] * (1 - in[0] - in[1] - 2*in[2]);\n+368 break;\n+369 default:\n+370 DUNE_THROW(RangeError, \"Component out of range.\");\n+371 }\n+372 } else {\n+373 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+374 }\n+375 }\n+376\n+_\b3_\b7_\b9 unsigned int _\bo_\br_\bd_\be_\br () const\n+380 {\n+381 return 4;\n+382 }\n+383\n+384 };\n+385\n+386\n+412 template \n+_\b4_\b1_\b3 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+414 {\n+415 // The binomial coefficient: dim+1 over 1\n+416 static const int numVertices = dim+1;\n+417\n+418 // The binomial coefficient: dim+1 over 2\n+419 static const int numEdges = (dim+1)*dim / 2;\n+420\n+421 public:\n+_\b4_\b2_\b3 _\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+424 : li(numVertices+numEdges + 1)\n+425 {\n+426 if (dim!=2)\n+427 DUNE_THROW(NotImplemented, \"only for 2d\");\n+428\n+429 li[0] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,2,0); // Vertex (0,0)\n+430 li[1] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,1,0); // Edge (0.5, 0)\n+431 li[2] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(1,2,0); // Vertex (1,0)\n+432 li[3] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(1,1,0); // Edge (0, 0.5)\n+433 li[4] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(2,1,0); // Edge (0.5, 0.5)\n+434 li[5] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(2,2,0); // Vertex (0,1)\n+435 li[6] = _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(0,0,0); // Element (1/3, 1/3)\n+436 }\n+437\n+_\b4_\b3_\b9 size_t _\bs_\bi_\bz_\be () const\n+440 {\n+441 return numVertices+numEdges + 1;\n+442 }\n+443\n+_\b4_\b4_\b5 const _\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& _\bl_\bo_\bc_\ba_\bl_\bK_\be_\by (size_t i) const\n+446 {\n+447 return li[i];\n+448 }\n+449\n+450 private:\n+451 std::vector li;\n+452 };\n+453\n+454 template\n+_\b4_\b5_\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_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+456 {\n+457 public:\n+458\n+460 template\n+_\b4_\b6_\b1 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+462 {\n+463 typename LB::Traits::DomainType x;\n+464 typename LB::Traits::RangeType y;\n+465\n+466 out.resize(7);\n+467\n+468 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+469\n+470 // vertices\n+471 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);\n+472 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);\n+473 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);\n+474\n+475 // edge bubbles\n+476 x[0] = 0.5; x[1] = 0.0; y = f(x);\n+477 out[1] = y - out[0]*(1-x[0]) - out[2]*x[0];\n+478\n+479 x[0] = 0.0; x[1] = 0.5; y = f(x);\n+480 out[3] = y - out[0]*(1-x[1]) - out[5]*x[1];\n+481\n+482 x[0] = 0.5; x[1] = 0.5; y = f(x);\n+483 out[4] = y - out[2]*x[0] - out[5]*x[1];\n+484\n+485 // element bubble\n+486 x[0] = 1.0/3; x[1] = 1.0/3; y = f(x);\n+487\n+489 _\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_\bo_\bu_\bb_\bl_\be_\b,_\bd_\bo_\bu_\bb_\bl_\be_\b,_\b2_\b>\n+shapeFunctions;\n+490 std::vector sfValues;\n+491 shapeFunctions.evaluateFunction(x, sfValues);\n+492\n+493 out[6] = y;\n+494 for (int i=0; i<6; i++)\n+495 out[6] -= out[i]*sfValues[i];\n+496\n+497 }\n+498\n+499 };\n+500\n+501\n+502}\n+503#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:_\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+_\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:34\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:42\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: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_\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:26\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:\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\n+HierarchicalSimplexP2WithElementBubbleLocalBasis()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:28\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 _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:75\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 _\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 hierarchicalsimplexp2withelementbubble.hh:54\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 _\bD_\b,_\b _\bR_\b,_\b _\b1_\b _\b>_\b:_\b:\n+_\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 hierarchicalsimplexp2withelementbubble.hh:63\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 _\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 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 _\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 hierarchicalsimplexp2withelementbubble.hh:57\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 _\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 hierarchicalsimplexp2withelementbubble.hh:86\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 _\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 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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:147\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 _\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 (3 in this case)\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_\bB_\ba_\bs_\bi_\bs_\b<_\b _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:153\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 _\bD_\b,_\b _\bR_\b,_\b _\b2_\b _\b>_\b:_\b:\n+_\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 hierarchicalsimplexp2withelementbubble.hh:170\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 _\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 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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:189\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 _\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 hierarchicalsimplexp2withelementbubble.hh:144\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 _\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 hierarchicalsimplexp2withelementbubble.hh:269\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 _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:\n+_\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 hierarchicalsimplexp2withelementbubble.hh:275\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 _\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.\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:34\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:42\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:379\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 _\bD_\b,_\b _\bR_\b,_\b _\b3_\b _\b>_\b:_\b:\n+_\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 hierarchicalsimplexp2withelementbubble.hh:296\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 _\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 hierarchicalsimplexp2withelementbubble.hh:318\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 _\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 hierarchicalsimplexp2withelementbubble.hh:266\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 finite element needed for the Zou-Kornhuber estimator for Signorini\n+problems.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:414\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+size_t size() const\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:439\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 Dune::LocalKey & localKey(size_t i) const\n+get i'th index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:445\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()\n+Standard constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:423\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:456\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+void interpolate(const F &ff, std::vector< C > &out) const\n+Local interpolation of a function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:461\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 ===============================================================================\n 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: brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference\n+dune-localfunctions: hierarchicalp2withelementbubble.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-
    brezzidouglasmarini1simplex2dlocalinterpolation.hh File Reference
    \n+
    hierarchicalp2withelementbubble.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n+\n

    Go to the source code of this file.

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

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1simplex2dlocalinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 _\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:_\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\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: brezzidouglasmarini1simplex2dlocalinterpolation.hh Source File\n+dune-localfunctions: hierarchicalp2withelementbubble.hh Source File\n \n \n \n \n \n \n \n@@ -70,134 +70,119 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2dlocalinterpolation.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 (C) 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_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_HIERARCHICAL_P2_WITH_ELEMENTBUBBLE_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-\n+\n+\n
    12
    \n-
    13namespace Dune
    \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+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \n+
    16
    \n+
    19 template<class D, class R, int dim>
    \n+
    \n+\n+
    21 {
    \n+
    22
    \n+
    23 static_assert(dim==2, "HierarchicalP2WithElementBubbleLocalFiniteElement only implemented for dim==2.");
    \n+
    24
    \n+
    25 public:
    \n+\n+\n+\n+
    31
    \n+\n-
    33
    \n+
    36
    \n
    \n-\n-
    40 {
    \n-
    41 using std::sqrt;
    \n-
    42 sign0 = sign1 = sign2 = 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
    \n-
    56 n0[0] = 0.0;
    \n-
    57 n0[1] = -1.0;
    \n-
    58 n1[0] = -1.0;
    \n-
    59 n1[1] = 0.0;
    \n-
    60 n2[0] = 1.0/sqrt(2.0);
    \n-
    61 n2[1] = 1.0/sqrt(2.0);
    \n-
    62 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n-
    63 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n-
    64 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n-
    65 }
    \n-
    \n-
    66
    \n-
    75 template<typename F, typename C>
    \n-
    \n-
    76 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    77 {
    \n-
    78 // f gives v*outer normal at a point on the edge!
    \n-
    79 typedef typename LB::Traits::RangeFieldType Scalar;
    \n+
    39 const typename Traits::LocalBasisType& localBasis () const
    \n+
    40 {
    \n+
    41 return basis_;
    \n+
    42 }
    \n+
    \n+
    43
    \n+
    \n+\n+
    47 {
    \n+
    48 return coefficients_;
    \n+
    49 }
    \n+
    \n+
    50
    \n+
    \n+\n+
    54 {
    \n+
    55 return interpolation_;
    \n+
    56 }
    \n+
    \n+
    57
    \n+
    \n+
    59 unsigned int size () const
    \n+
    60 {
    \n+
    61 return basis_.size();
    \n+
    62 }
    \n+
    \n+
    63
    \n+
    \n+
    66 static constexpr GeometryType type ()
    \n+
    67 {
    \n+
    68 return GeometryTypes::triangle;
    \n+
    69 }
    \n+
    \n+
    70
    \n+
    71 private:
    \n+\n+
    73
    \n+\n+
    75
    \n+\n+
    77 };
    \n+
    \n+
    78
    \n+
    79}
    \n
    80
    \n-
    81 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    82
    \n-
    83 out.resize(6);
    \n-
    84 fill(out.begin(), out.end(), 0.0);
    \n-
    85
    \n-
    86 const int qOrder = 4;
    \n-
    87 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n-
    88
    \n-
    89 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n-
    90 {
    \n-
    91 Scalar qPos = it->position();
    \n-
    92 typename LB::Traits::DomainType localPos;
    \n-
    93
    \n-
    94 localPos[0] = qPos;
    \n-
    95 localPos[1] = 0.0;
    \n-
    96 auto y = f(localPos);
    \n-
    97 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n-
    98 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;
    \n-
    99
    \n-
    100 localPos[0] = 0.0;
    \n-
    101 localPos[1] = qPos;
    \n-
    102 y = f(localPos);
    \n-
    103 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;
    \n-
    104 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;
    \n-
    105
    \n-
    106 localPos[0] = 1.0 - qPos;
    \n-
    107 localPos[1] = qPos;
    \n-
    108 y = f(localPos);
    \n-
    109 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n-
    110 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;
    \n-
    111 }
    \n-
    112 }
    \n-
    \n-
    113
    \n-
    114 private:
    \n-
    115 typename LB::Traits::RangeFieldType sign0,sign1,sign2;
    \n-
    116 typename LB::Traits::DomainType n0,n1,n2;
    \n-
    117 typename LB::Traits::RangeFieldType c0,c1,c2;
    \n-
    118 };
    \n-
    \n-
    119}
    \n-
    120
    \n-
    121#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    81#endif
    \n+
    Hierarchical p2 shape functions for the simplex.
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference triangle.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:25
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:76
    \n-
    BDM1Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.hh:39
    \n-
    BDM1Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1simplex2dlocalinterpolation.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 hierarchicalp2withelementbubble.hh:21
    \n+
    LocalFiniteElementTraits< HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim >, HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >, HierarchicalSimplexP2WithElementBubbleLocalInterpolation< HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > > > Traits
    Definition hierarchicalp2withelementbubble.hh:30
    \n+
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition hierarchicalp2withelementbubble.hh:59
    \n+
    const Traits::LocalBasisType & localBasis() const
    Definition hierarchicalp2withelementbubble.hh:39
    \n+
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition hierarchicalp2withelementbubble.hh:46
    \n+
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition hierarchicalp2withelementbubble.hh:53
    \n+
    static constexpr GeometryType type()
    Definition hierarchicalp2withelementbubble.hh:66
    \n+
    HierarchicalP2WithElementBubbleLocalFiniteElement()
    Definition hierarchicalp2withelementbubble.hh:34
    \n+
    Definition hierarchicalsimplexp2withelementbubble.hh:26
    \n+
    The local finite element needed for the Zou-Kornhuber estimator for Signorini problems.
    Definition hierarchicalsimplexp2withelementbubble.hh:414
    \n+
    Definition hierarchicalsimplexp2withelementbubble.hh:456
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,136 +1,138 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_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#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\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/_\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-13namespace _\bD_\bu_\bn_\be\n-14{\n-23 template\n-_\b2_\b4 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-25 {\n-26\n-27 public:\n-_\b2_\b9 _\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-30 {\n-31 sign0 = sign1 = sign2 = 1.0;\n-32 }\n-33\n-_\b3_\b9 _\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+13\n+14namespace _\bD_\bu_\bn_\be\n+15{\n+16\n+19 template\n+_\b2_\b0 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+21 {\n+22\n+23 static_assert(dim==2, \"HierarchicalP2WithElementBubbleLocalFiniteElement\n+only implemented for dim==2.\");\n+24\n+25 public:\n+28 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<_\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+29 _\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+_\b3_\b0\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<_\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+> > _\bT_\br_\ba_\bi_\bt_\bs;\n+31\n+_\b3_\b4 _\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+35 {}\n+36\n+_\b3_\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 40 {\n-41 using std::sqrt;\n-42 sign0 = sign1 = sign2 = 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\n-56 n0[0] = 0.0;\n-57 n0[1] = -1.0;\n-58 n1[0] = -1.0;\n-59 n1[1] = 0.0;\n-60 n2[0] = 1.0/sqrt(2.0);\n-61 n2[1] = 1.0/sqrt(2.0);\n-62 c0 = 0.5*n0[0] - 1.0*n0[1];\n-63 c1 = -1.0*n1[0] + 0.5*n1[1];\n-64 c2 = 0.5*n2[0] + 0.5*n2[1];\n-65 }\n-66\n-75 template\n-_\b7_\b6 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-77 {\n-78 // f gives v*outer normal at a point on the edge!\n-79 typedef typename LB::Traits::RangeFieldType Scalar;\n+41 return basis_;\n+42 }\n+43\n+_\b4_\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+47 {\n+48 return coefficients_;\n+49 }\n+50\n+_\b5_\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+54 {\n+55 return interpolation_;\n+56 }\n+57\n+_\b5_\b9 unsigned int _\bs_\bi_\bz_\be () const\n+60 {\n+61 return basis_.size();\n+62 }\n+63\n+_\b6_\b6 static constexpr GeometryType _\bt_\by_\bp_\be ()\n+67 {\n+68 return GeometryTypes::triangle;\n+69 }\n+70\n+71 private:\n+72 _\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> basis_;\n+73\n+74 _\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> coefficients_;\n+75\n+76\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<_\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+> interpolation_;\n+77 };\n+78\n+79}\n 80\n-81 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-82\n-83 out.resize(6);\n-84 fill(out.begin(), out.end(), 0.0);\n-85\n-86 const int qOrder = 4;\n-87 const Dune::QuadratureRule& rule = Dune::\n-QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n-88\n-89 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n-(); it!=rule.end(); ++it)\n-90 {\n-91 Scalar qPos = it->position();\n-92 typename LB::Traits::DomainType localPos;\n-93\n-94 localPos[0] = qPos;\n-95 localPos[1] = 0.0;\n-96 auto y = f(localPos);\n-97 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n-98 out[3] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight()/c0;\n-99\n-100 localPos[0] = 0.0;\n-101 localPos[1] = qPos;\n-102 y = f(localPos);\n-103 out[1] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1/c1;\n-104 out[4] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight()/c1;\n-105\n-106 localPos[0] = 1.0 - qPos;\n-107 localPos[1] = qPos;\n-108 y = f(localPos);\n-109 out[2] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n-110 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(2.0*qPos - 1.0)*it->weight()/c2;\n-111 }\n-112 }\n-113\n-114 private:\n-115 typename LB::Traits::RangeFieldType sign0,sign1,sign2;\n-116 typename LB::Traits::DomainType n0,n1,n2;\n-117 typename LB::Traits::RangeFieldType c0,c1,c2;\n-118 };\n-119}\n-120\n-121#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALINTERPOLATION_HH\n+81#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 _\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:25\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 &ff, 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:76\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:39\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:29\n-_\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_\b:_\b:_\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_\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:21\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_\br_\ba_\bi_\bt_\bs\n+LocalFiniteElementTraits< HierarchicalSimplexP2WithElementBubbleLocalBasis< D,\n+R, dim >, HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim >,\n+HierarchicalSimplexP2WithElementBubbleLocalInterpolation<\n+HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > > > Traits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:30\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+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 hierarchicalp2withelementbubble.hh:59\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 Traits::LocalBasisType & localBasis() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:39\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 Traits::LocalCoefficientsType & localCoefficients() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:46\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 Traits::LocalInterpolationType & localInterpolation() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:53\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()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalp2withelementbubble.hh:66\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:\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_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt\n+HierarchicalP2WithElementBubbleLocalFiniteElement()\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_\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+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:26\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 finite element needed for the Zou-Kornhuber estimator for Signorini\n+problems.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2withelementbubble.hh:414\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:456\n ===============================================================================\n 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: brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference\n+dune-localfunctions: hierarchicalp2.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-
    brezzidouglasmarini1simplex2dlocalcoefficients.hh File Reference
    \n+
    hierarchicalp2.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 Classes

    class  Dune::BDM1Simplex2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on triangles. 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.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1simplex2dlocalcoefficients.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+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 _\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:_\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/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: brezzidouglasmarini1simplex2dlocalcoefficients.hh Source File\n+dune-localfunctions: hierarchicalp2.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2dlocalcoefficients.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 (C) 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_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH
    \n
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \n+
    8#include <dune/geometry/type.hh>
    \n+
    9
    \n+\n+\n
    12
    \n-
    13namespace Dune
    \n-
    14{
    \n+\n+\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+
    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-
    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+
    39 {}
    \n
    \n-
    52}
    \n-
    53#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_SIMPLEX2D_LOCALCOEFFICIENTS_HH
    \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+
    Hierarchical p2 shape functions for the simplex.
    \n+\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:23
    \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:18
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,79 +1,137 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH\n+6#define DUNE_HIERARCHICAL_P2_LOCALFINITEELEMENT_HH\n 7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.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/_\bl_\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-13namespace _\bD_\bu_\bn_\be\n-14{\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-_\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+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+_\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+_\bl_\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_\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:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\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:18\n ===============================================================================\n 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: brezzidouglasmarini2cube2d.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-
    brezzidouglasmarini2cube2d.hh File Reference
    \n+
    hierarchicalprismp2localbasis.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalbasis.hh"
    \n-#include "brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalcoefficients.hh"
    \n-#include "brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalinterpolation.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::BDM2Cube2DLocalFiniteElement< D, R >
     Second order Brezzi-Douglas-Marini shape functions on quadrilaterals. 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,27 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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:_\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:_\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/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: brezzidouglasmarini2cube2d.hh Source File\n+dune-localfunctions: hierarchicalprismp2localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,271 @@\n \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2d.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 (C) 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_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-
    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+
    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-
    \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+
    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+
    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+
    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-
    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: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:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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,139 +1,282 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_HIERARCHICAL_PRISM_P2_LOCALBASIS_HH\n+6#define DUNE_HIERARCHICAL_PRISM_P2_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_\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-_\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+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-_\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_\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-_\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+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+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+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:_\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+_\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:34\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:42\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-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: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+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/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: brezzidouglasmarini1simplex2d.hh File Reference\n+dune-localfunctions: hierarchicalprismp2localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,32 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1simplex2d.hh File Reference
    \n+
    hierarchicalprismp2localinterpolation.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 <vector>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

    \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::HierarchicalPrismP2LocalInterpolation< LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,21 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+hierarchicalprismp2localinterpolation.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_\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_\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:_\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/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: brezzidouglasmarini1simplex2d.hh Source File\n+dune-localfunctions: hierarchicalprismp2localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,124 +70,108 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1simplex2d.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 (C) 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_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_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+
    8#include <vector>
    \n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    16 template<class LB>
    \n+
    \n+\n+
    18 {
    \n+
    19 public:
    \n+
    20
    \n+
    21 template<typename F, typename C>
    \n+
    \n+
    22 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    23 {
    \n+
    24 typename LB::Traits::DomainType x;
    \n+
    25 typename LB::Traits::RangeType y;
    \n+
    26 out.resize(18);
    \n+
    27
    \n+
    28 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \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+
    30 //First the vertex dofs
    \n+
    31 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n+
    32 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);
    \n+
    33 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);
    \n+
    34 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);
    \n+
    35 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);
    \n+
    36 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);
    \n+
    37
    \n+
    38
    \n+
    39 // Then: the 9 edge dofs and the 3 face dofs
    \n+
    40 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    41 out[6] = y - 0.5*(out[0] + out[3]);
    \n+
    42
    \n+
    43 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    44 out[7] = y - 0.5*(out[1] + out[4]);
    \n+
    45
    \n+
    46 x[0] = 0.0; x[1] = 1.0; x[2] = 0.5; y = f(x);
    \n+
    47 out[8] = y - 0.5*(out[2] + out[5]);
    \n+
    48
    \n+
    49 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n+
    50 out[9] = y - 0.5*(out[0] + out[1]);
    \n+
    51
    \n+
    52 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    53 out[10] = y - 0.5*(out[2] + out[0]);
    \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+
    55 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    56 out[11] = y - 0.5*(out[2] + out[1]);
    \n+
    57
    \n+
    58 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);
    \n+
    59 out[12] = y - 0.5*(out[3] + out[4]);
    \n+
    60
    \n+
    61 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n+
    62 out[13] = y - 0.5*(out[3] + out[5]);
    \n+
    63
    \n+
    64 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);
    \n+
    65 out[14] = y - 0.5*(out[4] + out[5]);
    \n+
    66
    \n+
    67
    \n+
    68 //faces
    \n+
    69 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    70 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );
    \n+
    71
    \n+
    72 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n+
    73 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );
    \n+
    74
    \n+
    75 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n+
    76 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );
    \n+
    77
    \n+
    78 }
    \n+
    \n+
    79 };
    \n+
    \n+
    80}
    \n+
    81
    \n+
    82#endif
    \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: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+
    Definition hierarchicalprismp2localinterpolation.hh:18
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition hierarchicalprismp2localinterpolation.hh:22
    \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,100 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_HH\n+6#define DUNE_HIERARCHICAL_PRISM_P2_LOCALINTERPOLATION_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-28 {\n+8#include \n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+16 template\n+_\b1_\b7 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+18 {\n+19 public:\n+20\n+21 template\n+_\b2_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+23 {\n+24 typename LB::Traits::DomainType x;\n+25 typename LB::Traits::RangeType y;\n+26 out.resize(18);\n+27\n+28 auto&& f = Impl::makeFunctionWithCallOperator(ff);\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-_\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+30 //First the vertex dofs\n+31 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);\n+32 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[1] = f(x);\n+33 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[2] = f(x);\n+34 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[3] = f(x);\n+35 x[0] = 1.0; x[1] = 0.0; x[2] = 1.0; out[4] = f(x);\n+36 x[0] = 0.0; x[1] = 1.0; x[2] = 1.0; out[5] = f(x);\n+37\n+38\n+39 // Then: the 9 edge dofs and the 3 face dofs\n+40 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+41 out[6] = y - 0.5*(out[0] + out[3]);\n+42\n+43 x[0] = 1.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+44 out[7] = y - 0.5*(out[1] + out[4]);\n+45\n+46 x[0] = 0.0; x[1] = 1.0; x[2] = 0.5; y = f(x);\n+47 out[8] = y - 0.5*(out[2] + out[5]);\n+48\n+49 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);\n+50 out[9] = y - 0.5*(out[0] + out[1]);\n+51\n+52 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+53 out[10] = y - 0.5*(out[2] + out[0]);\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+55 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+56 out[11] = y - 0.5*(out[2] + out[1]);\n+57\n+58 x[0] = 0.5; x[1] = 0.0; x[2] = 1.0; y = f(x);\n+59 out[12] = y - 0.5*(out[3] + out[4]);\n+60\n+61 x[0] = 0.0; x[1] = 0.5; x[2] = 1.0; y = f(x);\n+62 out[13] = y - 0.5*(out[3] + out[5]);\n+63\n+64 x[0] = 0.5; x[1] = 0.5; x[2] = 1.0; y = f(x);\n+65 out[14] = y - 0.5*(out[4] + out[5]);\n+66\n+67\n+68 //faces\n+69 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+70 out[15] = y - 0.25*(out[4] + out[1] + out[0] + out[3] );\n+71\n+72 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);\n+73 out[16] = y - 0.25*(out[2] + out[0] + out[3] + out[5] );\n+74\n+75 x[0] = 0.5; x[1] = 0.5; x[2] = 0.5; y = f(x);\n+76 out[17] = y - 0.25*(out[2] + out[1] + out[4] + out[5] );\n+77\n+78 }\n+79 };\n+80}\n+81\n+82#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_\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 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: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:_\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: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_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalprismp2localinterpolation.hh:22\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/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: brezzidouglasmarini2simplex2dlocalbasis.hh File Reference\n+dune-localfunctions: hierarchicalsimplexp2localinterpolation.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,32 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2simplex2dlocalbasis.hh File Reference
    \n+
    hierarchicalsimplexp2localinterpolation.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 <vector>
    \n+#include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

    \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::HierarchicalSimplexP2LocalInterpolation< LB >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,21 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini2simplex2dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n+hierarchicalsimplexp2localinterpolation.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_\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_\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_\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:_\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/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: brezzidouglasmarini2simplex2dlocalbasis.hh Source File\n+dune-localfunctions: hierarchicalsimplexp2localinterpolation.hh Source File\n \n \n \n \n \n \n \n@@ -70,334 +70,134 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2dlocalbasis.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 (C) 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_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH
    \n+
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_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+
    8#include <vector>
    \n+\n+
    10
    \n+
    11namespace Dune
    \n+
    12{
    \n+
    16 template<class LB>
    \n+
    \n+\n+
    18 {
    \n+
    19 public:
    \n+
    20
    \n+
    21 template<typename F, typename C>
    \n+
    \n+
    22 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    23 {
    \n+
    24 typename LB::Traits::DomainType x;
    \n+
    25 typename LB::Traits::RangeType y;
    \n+
    26
    \n+
    27 auto&& f = Impl::makeFunctionWithCallOperator<decltype(x)>(ff);
    \n+
    28
    \n+
    29 static_assert(LB::Traits::dimDomain <= 3,
    \n+
    30 "LocalInterpolation for HierarchicalSimplexP2 finite elements"
    \n+
    31 " is only implemented for dimDomain <=3!");
    \n+
    32
    \n+
    33 switch ( int(LB::Traits::dimDomain)) {
    \n+
    34
    \n+
    35 case 1 :
    \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-
    43
    \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+
    37 out.resize(3);
    \n+
    38
    \n+
    39 // First: the two vertex dofs
    \n+
    40 x[0] = 0.0; out[0] = f(x);
    \n+
    41 x[0] = 1.0; out[2] = f(x);
    \n+
    42
    \n+
    43 // Then: the edge dof
    \n+
    44 x[0] = 0.5; y = f(x);
    \n+
    45 out[1] = y - 0.5*(out[0] + out[2]);
    \n+
    46
    \n+
    47 break;
    \n+
    48
    \n+
    49
    \n+
    50 case 2 :
    \n+
    51
    \n+
    52 out.resize(6);
    \n+
    53
    \n+
    54 // First: the three vertex dofs
    \n+
    55 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);
    \n+
    56 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);
    \n+
    57 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);
    \n+
    58
    \n+
    59 // Then: the three edge dofs
    \n+
    60 x[0] = 0.5; x[1] = 0.0; y = f(x);
    \n+
    61 out[1] = y - 0.5*(out[0] + out[2]);
    \n+
    62
    \n+
    63 x[0] = 0.0; x[1] = 0.5; y = f(x);
    \n+
    64 out[3] = y - 0.5*(out[0] + out[5]);
    \n+
    65
    \n+
    66 x[0] = 0.5; x[1] = 0.5; y = f(x);
    \n+
    67 out[4] = y - 0.5*(out[2] + out[5]);
    \n+
    68
    \n+
    69 break;
    \n+
    70
    \n+
    71 case 3 :
    \n+
    72
    \n+
    73 out.resize(10);
    \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+
    75 // First: the four vertex dofs
    \n+
    76 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);
    \n+
    77 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[2] = f(x);
    \n+
    78 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[5] = f(x);
    \n+
    79 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[9] = f(x);
    \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+
    81 // Then: the six edge dofs
    \n+
    82 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);
    \n+
    83 out[1] = y - 0.5*(out[0] + out[2]);
    \n+
    84
    \n+
    85 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    86 out[3] = y - 0.5*(out[0] + out[5]);
    \n+
    87
    \n+
    88 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);
    \n+
    89 out[4] = y - 0.5*(out[2] + out[5]);
    \n+
    90
    \n+
    91 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    92 out[6] = y - 0.5*(out[0] + out[9]);
    \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+
    94 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);
    \n+
    95 out[7] = y - 0.5*(out[2] + out[9]);
    \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+
    97 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);
    \n+
    98 out[8] = y - 0.5*(out[5] + out[9]);
    \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+
    100 break;
    \n+
    101
    \n+
    102 }
    \n+
    103 }
    \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+
    104
    \n+
    105 };
    \n
    \n-
    314} // end namespace Dune
    \n-
    315#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALBASIS_HH
    \n+
    106}
    \n+
    107
    \n+
    108#endif
    \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:34
    \n-
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    Definition hierarchicalsimplexp2localinterpolation.hh:18
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Definition hierarchicalsimplexp2localinterpolation.hh:22
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,348 +1,126 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH\n+6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_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+8#include \n+9#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\bl_\bo_\bc_\ba_\bl_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n+10\n+11namespace _\bD_\bu_\bn_\be\n+12{\n+16 template\n+_\b1_\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_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+18 {\n+19 public:\n+20\n+21 template\n+_\b2_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+23 {\n+24 typename LB::Traits::DomainType x;\n+25 typename LB::Traits::RangeType y;\n+26\n+27 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+28\n+29 static_assert(LB::Traits::dimDomain <= 3,\n+30 \"LocalInterpolation for HierarchicalSimplexP2 finite elements\"\n+31 \" is only implemented for dimDomain <=3!\");\n+32\n+33 switch ( int(LB::Traits::dimDomain)) {\n+34\n+35 case 1 :\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 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+37 out.resize(3);\n+38\n+39 // First: the two vertex dofs\n+40 x[0] = 0.0; out[0] = f(x);\n+41 x[0] = 1.0; out[2] = f(x);\n+42\n+43 // Then: the edge dof\n+44 x[0] = 0.5; y = f(x);\n+45 out[1] = y - 0.5*(out[0] + out[2]);\n+46\n+47 break;\n+48\n+49\n+50 case 2 :\n+51\n+52 out.resize(6);\n+53\n+54 // First: the three vertex dofs\n+55 x[0] = 0.0; x[1] = 0.0; out[0] = f(x);\n+56 x[0] = 1.0; x[1] = 0.0; out[2] = f(x);\n+57 x[0] = 0.0; x[1] = 1.0; out[5] = f(x);\n+58\n+59 // Then: the three edge dofs\n+60 x[0] = 0.5; x[1] = 0.0; y = f(x);\n+61 out[1] = y - 0.5*(out[0] + out[2]);\n+62\n+63 x[0] = 0.0; x[1] = 0.5; y = f(x);\n+64 out[3] = y - 0.5*(out[0] + out[5]);\n+65\n+66 x[0] = 0.5; x[1] = 0.5; y = f(x);\n+67 out[4] = y - 0.5*(out[2] + out[5]);\n+68\n+69 break;\n+70\n+71 case 3 :\n+72\n+73 out.resize(10);\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+75 // First: the four vertex dofs\n+76 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; out[0] = f(x);\n+77 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; out[2] = f(x);\n+78 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; out[5] = f(x);\n+79 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; out[9] = f(x);\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+81 // Then: the six edge dofs\n+82 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; y = f(x);\n+83 out[1] = y - 0.5*(out[0] + out[2]);\n+84\n+85 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+86 out[3] = y - 0.5*(out[0] + out[5]);\n+87\n+88 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; y = f(x);\n+89 out[4] = y - 0.5*(out[2] + out[5]);\n+90\n+91 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+92 out[6] = y - 0.5*(out[0] + out[9]);\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+94 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; y = f(x);\n+95 out[7] = y - 0.5*(out[2] + out[9]);\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+97 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; y = f(x);\n+98 out[8] = y - 0.5*(out[5] + out[9]);\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+100 break;\n+101\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+105 };\n+106}\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+108#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_\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 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:34\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:42\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:18\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 &ff, std::vector< C > &out) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn hierarchicalsimplexp2localinterpolation.hh:22\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/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: brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference\n+dune-localfunctions: hierarchicalsimplexp2localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,41 +65,55 @@\n
    \n
    \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2simplex2dlocalinterpolation.hh File Reference
    \n+
    hierarchicalsimplexp2localbasis.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.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/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+\n+\n+\n+\n \n

    \n Classes

    class  Dune::BDM2Simplex2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on triangles. 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,23 +1,35 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini2simplex2dlocalinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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:_\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:_\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/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: brezzidouglasmarini2simplex2dlocalinterpolation.hh Source File\n+dune-localfunctions: hierarchicalsimplexp2localbasis.hh Source File\n \n \n \n \n \n \n \n@@ -70,159 +70,367 @@\n \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2dlocalinterpolation.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 (C) 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_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
    \n+
    6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\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-\n-
    31 {
    \n-
    32 sign0 = sign1 = sign2 = 1.0;
    \n-
    33 }
    \n-
    \n-
    34
    \n-
    \n-\n-
    41 {
    \n-
    42 sign0 = sign1 = sign2 = 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
    \n-
    56 m0[0] = 0.5;
    \n-
    57 m0[1] = 0.0;
    \n-
    58 m1[0] = 0.0;
    \n-
    59 m1[1] = 0.5;
    \n-
    60 m2[0] = 0.5;
    \n-
    61 m2[1] = 0.5;
    \n-
    62 n0[0] = 0.0;
    \n-
    63 n0[1] = -1.0;
    \n-
    64 n1[0] = -1.0;
    \n-
    65 n1[1] = 0.0;
    \n-
    66 n2[0] = 1.0/sqrt(2.0);
    \n-
    67 n2[1] = 1.0/sqrt(2.0);
    \n-
    68 c0 = 0.5*n0[0] - 1.0*n0[1];
    \n-
    69 c1 = -1.0*n1[0] + 0.5*n1[1];
    \n-
    70 c2 = 0.5*n2[0] + 0.5*n2[1];
    \n-
    71 }
    \n-
    \n-
    72
    \n-
    81 template<typename F, typename C>
    \n-
    \n-
    82 void interpolate(const F& ff, std::vector<C>& out) const
    \n-
    83 {
    \n-
    84 // f gives v*outer normal at a point on the edge!
    \n-
    85 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    86 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    87
    \n-
    88 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    89
    \n-
    90 out.resize(12);
    \n-
    91 fill(out.begin(), out.end(), 0.0);
    \n-
    92
    \n-
    93 const int qOrder = 4;
    \n-
    94 const Dune::QuadratureRule<Scalar,1>& rule = Dune::QuadratureRules<Scalar,1>::rule(Dune::GeometryTypes::simplex(1), qOrder);
    \n-
    95
    \n-
    96 for (typename Dune::QuadratureRule<Scalar,1>::const_iterator it=rule.begin(); it!=rule.end(); ++it)
    \n-
    97 {
    \n-
    98 Scalar qPos = it->position();
    \n-
    99
    \n-
    100 typename LB::Traits::DomainType localPos;
    \n-
    101
    \n-
    102 localPos[0] = qPos;
    \n-
    103 localPos[1] = 0.0;
    \n-
    104 auto y = f(localPos);
    \n-
    105 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;
    \n-
    106 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;
    \n-
    107 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign0/c0;
    \n-
    108
    \n-
    109 localPos[0] = 0.0;
    \n-
    110 localPos[1] = qPos;
    \n-
    111 y = f(localPos);
    \n-
    112 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;
    \n-
    113 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;
    \n-
    114 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign1/c1;
    \n-
    115
    \n-
    116 localPos[0] = 1.0 - qPos;
    \n-
    117 localPos[1] = qPos;
    \n-
    118 y = f(localPos);
    \n-
    119 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;
    \n-
    120 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;
    \n-
    121 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(6.0*qPos*qPos - 6.0*qPos + 1.0)*it->weight()*sign2/c2;
    \n-
    122 }
    \n-
    123
    \n-
    124 // a volume part is needed here for dofs: 9 10 11
    \n-
    125 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::simplex(2), qOrder);
    \n-
    126
    \n-
    127 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n-
    128 {
    \n-
    129 typename LB::Traits::DomainType localPos = it->position();
    \n-
    130 auto y = f(localPos);
    \n-
    131
    \n-
    132 out[9] += y[0]*it->weight();
    \n-
    133 out[10] += y[1]*it->weight();
    \n-
    134 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos[0]*localPos[0])
    \n-
    135 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos[1]))*it->weight();
    \n-
    136 }
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    139 private:
    \n-
    140 typename LB::Traits::RangeFieldType sign0, sign1, sign2;
    \n-
    141 typename LB::Traits::DomainType m0, m1, m2;
    \n-
    142 typename LB::Traits::DomainType n0, n1, n2;
    \n-
    143 typename LB::Traits::RangeFieldType c0, c1, c2;
    \n-
    144 };
    \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, 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+
    45 template<class D, class R>
    \n+
    \n+\n+
    47 {
    \n+
    48 public:
    \n+
    50 typedef LocalBasisTraits<D,1,Dune::FieldVector<D,1>,R,1,Dune::FieldVector<R,1>,
    \n+
    51 Dune::FieldMatrix<R,1,1> > Traits;
    \n+
    52
    \n+
    \n+
    54 unsigned int size () const
    \n+
    55 {
    \n+
    56 return 3;
    \n+
    57 }
    \n+
    \n+
    58
    \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(3);
    \n+
    64
    \n+
    65 out[0] = 1-in[0];
    \n+
    66 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);
    \n+
    67 out[2] = in[0];
    \n+
    68 }
    \n+
    \n+
    69
    \n+
    71 inline void
    \n+
    \n+
    72 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    73 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    74 {
    \n+
    75 out.resize(3);
    \n+
    76
    \n+
    77 out[0][0][0] = -1;
    \n+
    78 out[1][0][0] = 4-8*in[0];
    \n+
    79 out[2][0][0] = 1;
    \n+
    80 }
    \n+
    \n+
    81
    \n+
    \n+
    83 void partial (const std::array<unsigned int, 1>& order,
    \n+
    84 const typename Traits::DomainType& in, // position
    \n+
    85 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    86 {
    \n+
    87 auto totalOrder = order[0];
    \n+
    88 if (totalOrder == 0) {
    \n+
    89 evaluateFunction(in, out);
    \n+
    90 } else if (totalOrder == 1) {
    \n+
    91 out.resize(size());
    \n+
    92 out[0] = -1;
    \n+
    93 out[1] = 4-8*in[0];
    \n+
    94 out[2] = 1;
    \n+
    95 } else if (totalOrder == 2) {
    \n+
    96 out.resize(size());
    \n+
    97 out[0] = 0;
    \n+
    98 out[1] = -8;
    \n+
    99 out[2] = 0;
    \n+
    100 } else {
    \n+
    101 out.resize(size());
    \n+
    102 out[0] = out[1] = out[2] = 0;
    \n+
    103 }
    \n+
    104 }
    \n+
    \n+
    105
    \n+
    \n+
    108 unsigned int order () const
    \n+
    109 {
    \n+
    110 return 2;
    \n+
    111 }
    \n+
    \n+
    112
    \n+
    113 };
    \n+
    \n+
    114
    \n+
    134 template<class D, class R>
    \n+
    \n+\n+
    136 {
    \n+
    137 public:
    \n+
    139 typedef LocalBasisTraits<D,2,Dune::FieldVector<D,2>,R,1,Dune::FieldVector<R,1>,
    \n+
    140 Dune::FieldMatrix<R,1,2> > Traits;
    \n+
    141
    \n+
    \n+
    143 unsigned int size () const
    \n+
    144 {
    \n+
    145 return 6;
    \n+
    146 }
    \n+
    \n+
    147
    \n+
    \n+
    149 inline void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    150 std::vector<typename Traits::RangeType>& out) const
    \n+
    151 {
    \n+
    152 out.resize(6);
    \n+
    153
    \n+
    154 out[0] = 1 - in[0] - in[1];
    \n+
    155 out[1] = 4*in[0]*(1-in[0]-in[1]);
    \n+
    156 out[2] = in[0];
    \n+
    157 out[3] = 4*in[1]*(1-in[0]-in[1]);
    \n+
    158 out[4] = 4*in[0]*in[1];
    \n+
    159 out[5] = in[1];
    \n+
    160
    \n+
    161 }
    \n+
    \n+
    162
    \n+
    164 inline void
    \n+
    \n+
    165 evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    166 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    167 {
    \n+
    168 out.resize(6);
    \n+
    169
    \n+
    170 out[0][0][0] = -1; out[0][0][1] = -1;
    \n+
    171 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];
    \n+
    172 out[2][0][0] = 1; out[2][0][1] = 0;
    \n+
    173 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];
    \n+
    174 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];
    \n+
    175 out[5][0][0] = 0; out[5][0][1] = 1;
    \n+
    176 }
    \n+
    \n+
    177
    \n+
    \n+
    179 void partial (const std::array<unsigned int, 2>& order,
    \n+
    180 const typename Traits::DomainType& in, // position
    \n+
    181 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    182 {
    \n+
    183 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    184 if (totalOrder == 0) {
    \n+
    185 evaluateFunction(in, out);
    \n+
    186 } else if (totalOrder == 1) {
    \n+
    187 out.resize(size());
    \n+
    188 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    189
    \n+
    190 switch (direction) {
    \n+
    191 case 0:
    \n+
    192 out[0] = -1;
    \n+
    193 out[1] = 4-8*in[0]-4*in[1];
    \n+
    194 out[2] = 1;
    \n+
    195 out[3] = -4*in[1];
    \n+
    196 out[4] = 4*in[1];
    \n+
    197 out[5] = 0;
    \n+
    198 break;
    \n+
    199 case 1:
    \n+
    200 out[0] = -1;
    \n+
    201 out[1] = -4*in[0];
    \n+
    202 out[2] = 0;
    \n+
    203 out[3] = 4-4*in[0]-8*in[1];
    \n+
    204 out[4] = 4*in[0];
    \n+
    205 out[5] = 1;
    \n+
    206 break;
    \n+
    207 default:
    \n+
    208 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    209 }
    \n+
    210 } else {
    \n+
    211 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    212 }
    \n+
    213 }
    \n+
    \n+
    214
    \n+
    \n+
    217 unsigned int order () const
    \n+
    218 {
    \n+
    219 return 2;
    \n+
    220 }
    \n+
    \n+
    221
    \n+
    222 };
    \n+
    \n+
    223
    \n+
    247 template<class D, class R>
    \n+
    \n+\n+
    249 {
    \n+
    250 public:
    \n+
    252 typedef LocalBasisTraits<D,3,Dune::FieldVector<D,3>,R,1,Dune::FieldVector<R,1>,
    \n+
    253 Dune::FieldMatrix<R,1,3> > Traits;
    \n+
    254
    \n+
    \n+
    256 unsigned int size () const
    \n+
    257 {
    \n+
    258 return 10;
    \n+
    259 }
    \n+
    \n+
    260
    \n+
    \n+
    262 void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    263 std::vector<typename Traits::RangeType>& out) const
    \n+
    264 {
    \n+
    265 out.resize(10);
    \n+
    266
    \n+
    267 out[0] = 1 - in[0] - in[1] - in[2];
    \n+
    268 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);
    \n+
    269 out[2] = in[0];
    \n+
    270 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);
    \n+
    271 out[4] = 4 * in[0] * in[1];
    \n+
    272 out[5] = in[1];
    \n+
    273 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);
    \n+
    274 out[7] = 4 * in[0] * in[2];
    \n+
    275 out[8] = 4 * in[1] * in[2];
    \n+
    276 out[9] = in[2];
    \n+
    277 }
    \n+
    \n+
    278
    \n+
    \n+
    280 void evaluateJacobian (const typename Traits::DomainType& in, // position
    \n+
    281 std::vector<typename Traits::JacobianType>& out) const // return value
    \n+
    282 {
    \n+
    283 out.resize(10);
    \n+
    284
    \n+
    285 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;
    \n+
    286 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+
    287 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;
    \n+
    288 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+
    289 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;
    \n+
    290 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;
    \n+
    291 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+
    292 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];
    \n+
    293 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];
    \n+
    294 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;
    \n+
    295 }
    \n+
    \n+
    296
    \n+
    \n+
    298 void partial (const std::array<unsigned int, 3>& order,
    \n+
    299 const typename Traits::DomainType& in, // position
    \n+
    300 std::vector<typename Traits::RangeType>& out) const // return value
    \n+
    301 {
    \n+
    302 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);
    \n+
    303 if (totalOrder == 0) {
    \n+
    304 evaluateFunction(in, out);
    \n+
    305 } else if (totalOrder == 1) {
    \n+
    306 out.resize(size());
    \n+
    307 auto const direction = std::distance(order.begin(), std::find(order.begin(), order.end(), 1));
    \n+
    308
    \n+
    309 switch (direction) {
    \n+
    310 case 0:
    \n+
    311 out[0] = -1;
    \n+
    312 out[1] = 4-8*in[0]-4*in[1]-4*in[2];
    \n+
    313 out[2] = 1;
    \n+
    314 out[3] = -4*in[1];
    \n+
    315 out[4] = 4*in[1];
    \n+
    316 out[5] = 0;
    \n+
    317 out[6] = -4*in[2];
    \n+
    318 out[7] = 4*in[2];
    \n+
    319 out[8] = 0;
    \n+
    320 out[9] = 0;
    \n+
    321 break;
    \n+
    322 case 1:
    \n+
    323 out[0] = -1;
    \n+
    324 out[1] = -4*in[0];
    \n+
    325 out[2] = 0;
    \n+
    326 out[3] = 4-4*in[0]-8*in[1]-4*in[2];
    \n+
    327 out[4] = 4*in[0];
    \n+
    328 out[5] = 1;
    \n+
    329 out[6] = -4*in[2];
    \n+
    330 out[7] = 0;
    \n+
    331 out[8] = 4*in[2];
    \n+
    332 out[9] = 0;
    \n+
    333 break;
    \n+
    334 case 2:
    \n+
    335 out[0] = -1;
    \n+
    336 out[1] = -4*in[0];
    \n+
    337 out[2] = 0;
    \n+
    338 out[3] = -4*in[1];
    \n+
    339 out[4] = 0;
    \n+
    340 out[5] = 0;
    \n+
    341 out[6] = 4-4*in[0]-4*in[1]-8*in[2];
    \n+
    342 out[7] = 4*in[0];
    \n+
    343 out[8] = 4*in[1];
    \n+
    344 out[9] = 1;
    \n+
    345 break;
    \n+
    346 default:
    \n+
    347 DUNE_THROW(RangeError, "Component out of range.");
    \n+
    348 }
    \n+
    349 } else {
    \n+
    350 DUNE_THROW(NotImplemented, "Desired derivative order is not implemented");
    \n+
    351 }
    \n+
    352 }
    \n+
    \n+
    353
    \n+
    \n+
    356 unsigned int order () const
    \n+
    357 {
    \n+
    358 return 2;
    \n+
    359 }
    \n
    \n-
    145} // end namespace Dune
    \n-
    146#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH
    \n+
    360
    \n+
    361 };
    \n+
    \n+
    362}
    \n+
    363#endif
    \n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on triangles.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:26
    \n-
    BDM2Simplex2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:30
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:82
    \n-
    BDM2Simplex2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 8.
    Definition brezzidouglasmarini2simplex2dlocalinterpolation.hh:40
    \n-\n+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \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:108
    \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:51
    \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:83
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:54
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:72
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:60
    \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:140
    \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:179
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:143
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:217
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:165
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:149
    \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:253
    \n+
    void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
    Evaluate all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:262
    \n+
    void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
    Evaluate Jacobian of all shape functions.
    Definition hierarchicalsimplexp2localbasis.hh:280
    \n+
    unsigned int size() const
    number of shape functions
    Definition hierarchicalsimplexp2localbasis.hh:256
    \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:298
    \n+
    unsigned int order() const
    Polynomial order of the shape functions (2 in this case)
    Definition hierarchicalsimplexp2localbasis.hh:356
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,168 +1,403 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH\n+6#define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-24 template\n-_\b2_\b5 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+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\n-28 public:\n-_\b3_\b0 _\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-31 {\n-32 sign0 = sign1 = sign2 = 1.0;\n-33 }\n-34\n-_\b4_\b0 _\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-41 {\n-42 sign0 = sign1 = sign2 = 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\n-56 m0[0] = 0.5;\n-57 m0[1] = 0.0;\n-58 m1[0] = 0.0;\n-59 m1[1] = 0.5;\n-60 m2[0] = 0.5;\n-61 m2[1] = 0.5;\n-62 n0[0] = 0.0;\n-63 n0[1] = -1.0;\n-64 n1[0] = -1.0;\n-65 n1[1] = 0.0;\n-66 n2[0] = 1.0/sqrt(2.0);\n-67 n2[1] = 1.0/sqrt(2.0);\n-68 c0 = 0.5*n0[0] - 1.0*n0[1];\n-69 c1 = -1.0*n1[0] + 0.5*n1[1];\n-70 c2 = 0.5*n2[0] + 0.5*n2[1];\n-71 }\n-72\n-81 template\n-_\b8_\b2 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& ff, std::vector& out) const\n-83 {\n-84 // f gives v*outer normal at a point on the edge!\n-85 typedef typename LB::Traits::RangeFieldType Scalar;\n-86 typedef typename LB::Traits::DomainFieldType Vector;\n-87\n-88 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-89\n-90 out.resize(12);\n-91 fill(out.begin(), out.end(), 0.0);\n-92\n-93 const int qOrder = 4;\n-94 const Dune::QuadratureRule& rule = Dune::\n-QuadratureRules::rule(Dune::GeometryTypes::simplex(1), qOrder);\n-95\n-96 for (typename Dune::QuadratureRule::const_iterator it=rule.begin\n-(); it!=rule.end(); ++it)\n-97 {\n-98 Scalar qPos = it->position();\n-99\n-100 typename LB::Traits::DomainType localPos;\n-101\n-102 localPos[0] = qPos;\n-103 localPos[1] = 0.0;\n-104 auto y = f(localPos);\n-105 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0/c0;\n-106 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(1.0 - 2.0*qPos)*it->weight()/c0;\n-107 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-108\n-109 localPos[0] = 0.0;\n-110 localPos[1] = qPos;\n-111 y = f(localPos);\n-112 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1/c1;\n-113 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(2.0*qPos-1.0)*it->weight()/c1;\n-114 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-115\n-116 localPos[0] = 1.0 - qPos;\n-117 localPos[1] = qPos;\n-118 y = f(localPos);\n-119 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2/c2;\n-120 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight()/c2;\n-121 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-122 }\n-123\n-124 // a volume part is needed here for dofs: 9 10 11\n-125 const QuadratureRule& rule2 = QuadratureRules::rule\n-(GeometryTypes::simplex(2), qOrder);\n-126\n-127 for (typename QuadratureRule::const_iterator it=rule2.begin();\n-it!=rule2.end(); ++it)\n-128 {\n-129 typename LB::Traits::DomainType localPos = it->position();\n-130 auto y = f(localPos);\n-131\n-132 out[9] += y[0]*it->weight();\n-133 out[10] += y[1]*it->weight();\n-134 out[11] += (y[0]*(localPos[0]-2.0*localPos[0]*localPos[1]-localPos\n-[0]*localPos[0])\n-135 +y[1]*(-localPos[1]+2.0*localPos[0]*localPos[1]+localPos[1]*localPos\n-[1]))*it->weight();\n-136 }\n-137 }\n-138\n-139 private:\n-140 typename LB::Traits::RangeFieldType sign0, sign1, sign2;\n-141 typename LB::Traits::DomainType m0, m1, m2;\n-142 typename LB::Traits::DomainType n0, n1, n2;\n-143 typename LB::Traits::RangeFieldType c0, c1, c2;\n-144 };\n-145} // end namespace Dune\n-146#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALINTERPOLATION_HH\n+27 DUNE_THROW(Dune::NotImplemented,\"HierarchicalSimplexP2LocalBasis not\n+implemented for dim > 3.\");\n+28 }\n+29 };\n+30\n+45 template\n+_\b4_\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_\bB_\ba_\bs_\bi_\bs\n+47 {\n+48 public:\n+50 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_\b1 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+52\n+_\b5_\b4 unsigned int _\bs_\bi_\bz_\be () const\n+55 {\n+56 return 3;\n+57 }\n+58\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(3);\n+64\n+65 out[0] = 1-in[0];\n+66 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);\n+67 out[2] = in[0];\n+68 }\n+69\n+71 inline void\n+_\b7_\b2 _\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+73 std::vector& out) const // return value\n+74 {\n+75 out.resize(3);\n+76\n+77 out[0][0][0] = -1;\n+78 out[1][0][0] = 4-8*in[0];\n+79 out[2][0][0] = 1;\n+80 }\n+81\n+_\b8_\b3 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+84 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+85 std::vector& out) const // return value\n+86 {\n+87 auto totalOrder = order[0];\n+88 if (totalOrder == 0) {\n+89 evaluateFunction(in, out);\n+90 } else if (totalOrder == 1) {\n+91 out.resize(size());\n+92 out[0] = -1;\n+93 out[1] = 4-8*in[0];\n+94 out[2] = 1;\n+95 } else if (totalOrder == 2) {\n+96 out.resize(size());\n+97 out[0] = 0;\n+98 out[1] = -8;\n+99 out[2] = 0;\n+100 } else {\n+101 out.resize(size());\n+102 out[0] = out[1] = out[2] = 0;\n+103 }\n+104 }\n+105\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+134 template\n+_\b1_\b3_\b5 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+136 {\n+137 public:\n+139 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_\b0 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+141\n+_\b1_\b4_\b3 unsigned int _\bs_\bi_\bz_\be () const\n+144 {\n+145 return 6;\n+146 }\n+147\n+_\b1_\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+150 std::vector& out) const\n+151 {\n+152 out.resize(6);\n+153\n+154 out[0] = 1 - in[0] - in[1];\n+155 out[1] = 4*in[0]*(1-in[0]-in[1]);\n+156 out[2] = in[0];\n+157 out[3] = 4*in[1]*(1-in[0]-in[1]);\n+158 out[4] = 4*in[0]*in[1];\n+159 out[5] = in[1];\n+160\n+161 }\n+162\n+164 inline void\n+_\b1_\b6_\b5 _\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+166 std::vector& out) const // return value\n+167 {\n+168 out.resize(6);\n+169\n+170 out[0][0][0] = -1; out[0][0][1] = -1;\n+171 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];\n+172 out[2][0][0] = 1; out[2][0][1] = 0;\n+173 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];\n+174 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];\n+175 out[5][0][0] = 0; out[5][0][1] = 1;\n+176 }\n+177\n+_\b1_\b7_\b9 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+180 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+181 std::vector& out) const // return value\n+182 {\n+183 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+184 if (totalOrder == 0) {\n+185 evaluateFunction(in, out);\n+186 } else if (totalOrder == 1) {\n+187 out.resize(size());\n+188 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+189\n+190 switch (direction) {\n+191 case 0:\n+192 out[0] = -1;\n+193 out[1] = 4-8*in[0]-4*in[1];\n+194 out[2] = 1;\n+195 out[3] = -4*in[1];\n+196 out[4] = 4*in[1];\n+197 out[5] = 0;\n+198 break;\n+199 case 1:\n+200 out[0] = -1;\n+201 out[1] = -4*in[0];\n+202 out[2] = 0;\n+203 out[3] = 4-4*in[0]-8*in[1];\n+204 out[4] = 4*in[0];\n+205 out[5] = 1;\n+206 break;\n+207 default:\n+208 DUNE_THROW(RangeError, \"Component out of range.\");\n+209 }\n+210 } else {\n+211 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+212 }\n+213 }\n+214\n+_\b2_\b1_\b7 unsigned int _\bo_\br_\bd_\be_\br () const\n+218 {\n+219 return 2;\n+220 }\n+221\n+222 };\n+223\n+247 template\n+_\b2_\b4_\b8 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+249 {\n+250 public:\n+252 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_\b3 Dune::FieldMatrix > _\bT_\br_\ba_\bi_\bt_\bs;\n+254\n+_\b2_\b5_\b6 unsigned int _\bs_\bi_\bz_\be () const\n+257 {\n+258 return 10;\n+259 }\n+260\n+_\b2_\b6_\b2 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+263 std::vector& out) const\n+264 {\n+265 out.resize(10);\n+266\n+267 out[0] = 1 - in[0] - in[1] - in[2];\n+268 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);\n+269 out[2] = in[0];\n+270 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);\n+271 out[4] = 4 * in[0] * in[1];\n+272 out[5] = in[1];\n+273 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);\n+274 out[7] = 4 * in[0] * in[2];\n+275 out[8] = 4 * in[1] * in[2];\n+276 out[9] = in[2];\n+277 }\n+278\n+_\b2_\b8_\b0 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+281 std::vector& out) const // return value\n+282 {\n+283 out.resize(10);\n+284\n+285 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;\n+286 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+287 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;\n+288 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+289 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;\n+290 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;\n+291 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+292 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];\n+293 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];\n+294 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;\n+295 }\n+296\n+_\b2_\b9_\b8 void _\bp_\ba_\br_\bt_\bi_\ba_\bl (const std::array& order,\n+299 const typename _\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be& in, // position\n+300 std::vector& out) const // return value\n+301 {\n+302 auto totalOrder = std::accumulate(order.begin(), order.end(), 0);\n+303 if (totalOrder == 0) {\n+304 evaluateFunction(in, out);\n+305 } else if (totalOrder == 1) {\n+306 out.resize(size());\n+307 auto const direction = std::distance(order.begin(), std::find(order.begin\n+(), order.end(), 1));\n+308\n+309 switch (direction) {\n+310 case 0:\n+311 out[0] = -1;\n+312 out[1] = 4-8*in[0]-4*in[1]-4*in[2];\n+313 out[2] = 1;\n+314 out[3] = -4*in[1];\n+315 out[4] = 4*in[1];\n+316 out[5] = 0;\n+317 out[6] = -4*in[2];\n+318 out[7] = 4*in[2];\n+319 out[8] = 0;\n+320 out[9] = 0;\n+321 break;\n+322 case 1:\n+323 out[0] = -1;\n+324 out[1] = -4*in[0];\n+325 out[2] = 0;\n+326 out[3] = 4-4*in[0]-8*in[1]-4*in[2];\n+327 out[4] = 4*in[0];\n+328 out[5] = 1;\n+329 out[6] = -4*in[2];\n+330 out[7] = 0;\n+331 out[8] = 4*in[2];\n+332 out[9] = 0;\n+333 break;\n+334 case 2:\n+335 out[0] = -1;\n+336 out[1] = -4*in[0];\n+337 out[2] = 0;\n+338 out[3] = -4*in[1];\n+339 out[4] = 0;\n+340 out[5] = 0;\n+341 out[6] = 4-4*in[0]-4*in[1]-8*in[2];\n+342 out[7] = 4*in[0];\n+343 out[8] = 4*in[1];\n+344 out[9] = 1;\n+345 break;\n+346 default:\n+347 DUNE_THROW(RangeError, \"Component out of range.\");\n+348 }\n+349 } else {\n+350 DUNE_THROW(NotImplemented, \"Desired derivative order is not implemented\");\n+351 }\n+352 }\n+353\n+_\b3_\b5_\b6 unsigned int _\bo_\br_\bd_\be_\br () const\n+357 {\n+358 return 2;\n+359 }\n+360\n+361 };\n+362}\n+363#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_\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:26\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: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_\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 &ff, 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:82\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:40\n-_\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_\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:34\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:42\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:108\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:51\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:83\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:54\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:72\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:60\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:140\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:179\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:143\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:217\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:165\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:149\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:253\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:262\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:280\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: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:_\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:298\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:356\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/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: brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference\n+dune-localfunctions: interface.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,54 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference
    \n+
    interface.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n+
    #include <array>
    \n+#include <cstddef>
    \n #include <vector>
    \n-#include "../../common/localkey.hh"
    \n+#include <dune/geometry/type.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::BDM2Simplex2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-2 elements on triangles. More...
    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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,42 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini2simplex2dlocalcoefficients.hh File Reference\n+interface.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+#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_\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:_\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/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: brezzidouglasmarini2simplex2dlocalcoefficients.hh Source File\n+dune-localfunctions: interface.hh Source File\n \n \n \n \n \n \n \n@@ -70,83 +70,214 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2dlocalcoefficients.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 (C) 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-
    7
    \n-
    8#include <cstddef>
    \n-
    9#include <vector>
    \n-
    10
    \n-
    11#include "../../common/localkey.hh"
    \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-
    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+
    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-
    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+
    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:23
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,85 +1,290 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-7\n-8#include \n-9#include \n-10\n-11#include \"../../common/localkey.hh\"\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-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+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} // end namespace Dune\n-59#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_SIMPLEX2D_LOCALCOEFFICIENTS_HH\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:_\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+_\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-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+_\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-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: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/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: brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n+dune-localfunctions: localtoglobaladaptors.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,51 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube2dlocalbasis.hh File Reference
    \n+
    localtoglobaladaptors.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 <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 \n

    \n Classes

    class  Dune::BDM1Cube2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
    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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,44 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1cube2dlocalbasis.hh File Reference\n-#include \n-#include \n-#include \n+localtoglobaladaptors.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 \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_\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:_\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/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: brezzidouglasmarini1cube2dlocalbasis.hh Source File\n+dune-localfunctions: localtoglobaladaptors.hh Source File\n \n \n \n \n \n \n \n@@ -70,241 +70,270 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2dlocalbasis.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 (C) 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-
    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-
    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+
    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-
    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+
    \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[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+
    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-
    \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+
    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-
    221}
    \n-
    222#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALBASIS_HH
    \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-
    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:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    RF RangeFieldType
    Export type for range field.
    Definition common/localbasis.hh:45
    \n+
    static constexpr int dimRange
    dimension of the range
    Definition common/localbasis.hh:48
    \n+
    DF DomainFieldType
    Export type for domain field.
    Definition common/localbasis.hh:36
    \n+
    static constexpr int dimDomain
    dimension of the domain
    Definition common/localbasis.hh:39
    \n+
    R RangeType
    range type
    Definition common/localbasis.hh:51
    \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,255 +1,333 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-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_\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-_\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+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-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+_\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[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+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-_\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+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 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+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:_\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 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:34\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:42\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: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_\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:48\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:36\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:39\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:51\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/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: brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: localkey.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-
    brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference
    \n+
    localkey.hh File Reference
    \n
    \n
    \n-
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \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

    \n Classes

    class  Dune::BDM1Cube2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-1 elements on quadrilaterals. More...
    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,24 +1,22 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1cube2dlocalcoefficients.hh File Reference\n+localkey.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+#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_\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_\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/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: brezzidouglasmarini1cube2dlocalcoefficients.hh Source File\n+dune-localfunctions: localkey.hh Source File\n \n \n \n \n \n \n \n@@ -70,78 +70,122 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2dlocalcoefficients.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 (C) 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_LOCALKEY_HH
    \n+
    6#define DUNE_LOCALKEY_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+
    8#include <array>
    \n+
    9#include <cstddef>
    \n+
    10#include <ostream>
    \n+
    11
    \n+
    12namespace Dune
    \n+
    13{
    \n+
    \n+\n+
    23 {
    \n+
    24 public:
    \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+
    27 enum {
    \n+\n+
    37 };
    \n+
    38
    \n+
    \n+\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+
    \n+
    48 LocalKey (unsigned int s, unsigned int c, unsigned int i)
    \n+
    49 {
    \n+
    50 values_[0] = s;
    \n+
    51 values_[1] = c;
    \n+
    52 values_[2] = i;
    \n+
    53 }
    \n+
    \n+
    54
    \n+
    \n+
    56 inline unsigned int subEntity () const
    \n+
    57 {
    \n+
    58 return values_[0];
    \n+
    59 }
    \n+
    \n+
    60
    \n+
    \n+
    62 inline unsigned int codim () const
    \n+
    63 {
    \n+
    64 return values_[1];
    \n+
    65 }
    \n+
    \n+
    66
    \n+
    \n+
    68 inline unsigned int index () const
    \n+
    69 {
    \n+
    70 return values_[2];
    \n+
    71 }
    \n+
    \n+
    72
    \n+
    \n+
    74 void index (unsigned int i)
    \n+
    75 {
    \n+
    76 values_[2] = i;
    \n+
    77 }
    \n+
    \n+
    78
    \n+
    \n+
    80 bool operator< (const LocalKey& other) const
    \n+
    81 {
    \n+
    82 return values_ < other.values_;
    \n+
    83 }
    \n+
    \n+
    84
    \n+
    \n+
    86 friend std::ostream& operator<< (std::ostream& s, const LocalKey& localKey)
    \n+
    87 {
    \n+
    88 return s << "[ subEntity: " << localKey.subEntity()
    \n+
    89 << ", codim: " << localKey.codim()
    \n+
    90 << ", index: " << localKey.index() << " ]";
    \n+
    91 }
    \n+
    \n+
    92
    \n+
    93 private:
    \n+
    94
    \n+
    95 // We use an array to store the values in order to be able to use the array::operator< implementation
    \n+
    96 std::array<unsigned int,3> values_;
    \n+
    97
    \n+
    98 };
    \n+
    \n+
    99
    \n+
    100}
    \n+
    101#endif
    \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:23
    \n+
    LocalKey()
    Standard constructor for uninitialized local index.
    Definition localkey.hh:40
    \n+
    unsigned int index() const
    Return offset within subentity.
    Definition localkey.hh:68
    \n+
    unsigned int codim() const
    Return codim of associated entity.
    Definition localkey.hh:62
    \n+
    unsigned int subEntity() const
    Return number of associated subentity.
    Definition localkey.hh:56
    \n+
    LocalKey(unsigned int s, unsigned int c, unsigned int i)
    Initialize all components.
    Definition localkey.hh:48
    \n+
    bool operator<(const LocalKey &other) const
    Less-than operator so we can use this class as a key type in stl containers.
    Definition localkey.hh:80
    \n+
    @ intersectionCodim
    Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
    Definition localkey.hh:36
    \n+
    void index(unsigned int i)
    Set index component.
    Definition localkey.hh:74
    \n+
    friend std::ostream & operator<<(std::ostream &s, const LocalKey &localKey)
    Write LocalKey object to output stream.
    Definition localkey.hh:86
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,77 +1,127 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 DUNE_LOCALKEY_HH\n+6#define DUNE_LOCALKEY_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_\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+8#include \n+9#include \n+10#include \n+11\n+12namespace _\bD_\bu_\bn_\be\n+13{\n+_\b2_\b2 class _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+23 {\n+24 public:\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+27 enum {\n+36 _\bi_\bn_\bt_\be_\br_\bs_\be_\bc_\bt_\bi_\bo_\bn_\bC_\bo_\bd_\bi_\bm=666\n+_\b3_\b7 };\n+38\n+_\b4_\b0 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by ()\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+_\b4_\b8 _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by (unsigned int s, unsigned int c, unsigned int i)\n+49 {\n+50 values_[0] = s;\n+51 values_[1] = c;\n+52 values_[2] = i;\n+53 }\n+54\n+_\b5_\b6 inline unsigned int _\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by () const\n+57 {\n+58 return values_[0];\n+59 }\n+60\n+_\b6_\b2 inline unsigned int _\bc_\bo_\bd_\bi_\bm () const\n+63 {\n+64 return values_[1];\n+65 }\n+66\n+_\b6_\b8 inline unsigned int _\bi_\bn_\bd_\be_\bx () const\n+69 {\n+70 return values_[2];\n+71 }\n+72\n+_\b7_\b4 void _\bi_\bn_\bd_\be_\bx (unsigned int i)\n+75 {\n+76 values_[2] = i;\n+77 }\n+78\n+_\b8_\b0 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<_\b (const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by& other) const\n+81 {\n+82 return values_ < other.values_;\n+83 }\n+84\n+_\b8_\b6 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+87 {\n+88 return s << \"[ subEntity: \" << localKey._\bs_\bu_\bb_\bE_\bn_\bt_\bi_\bt_\by()\n+89 << \", codim: \" << localKey._\bc_\bo_\bd_\bi_\bm()\n+90 << \", index: \" << localKey._\bi_\bn_\bd_\be_\bx() << \" ]\";\n+91 }\n+92\n+93 private:\n+94\n+95 // We use an array to store the values in order to be able to use the\n+array::operator< implementation\n+96 std::array values_;\n+97\n+98 };\n+99\n+100}\n+101#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_\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:23\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+LocalKey()\n+Standard constructor for uninitialized local index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:40\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+unsigned int index() const\n+Return offset within subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n+unsigned int codim() const\n+Return codim of associated entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:62\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+unsigned int subEntity() const\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_\bK_\be_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by\n+LocalKey(unsigned int s, unsigned int c, unsigned int i)\n+Initialize all components.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:48\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\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:80\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:36\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+void index(unsigned int i)\n+Set index component.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:74\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:86\n ===============================================================================\n 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: brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference\n+dune-localfunctions: virtualinterface.hh File Reference\n \n \n \n \n \n \n \n@@ -65,34 +65,57 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference
    \n+
    virtualinterface.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \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/localinterpolation.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 Classes

    class  Dune::BDM1Cube2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral. More...
    class  Dune::LocalFiniteElementFunctionBase< FE >
     Return a proper base class for functions to use with LocalInterpolation. More...
     
    struct  Dune::LocalFiniteElementFunctionBase< FE >::FunctionBaseDummy::Traits
     
    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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,46 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1cube2dlocalinterpolation.hh File Reference\n+virtualinterface.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_\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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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-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+ 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_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bF_\bE_\b _\b>\n+\u00a0 Return a proper base class for functions to use with\n+ LocalInterpolation. _\bM_\bo_\br_\be_\b._\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_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b<_\b _\bF_\bE_\b _\b>_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\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_\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/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: brezzidouglasmarini1cube2dlocalinterpolation.hh Source File\n+dune-localfunctions: virtualinterface.hh Source File\n \n \n \n \n \n \n \n@@ -70,142 +70,299 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2dlocalinterpolation.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 (C) 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_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
    \n
    7
    \n-
    8#include <vector>
    \n-
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\n+
    8#include <type_traits>
    \n+
    9#include <array>
    \n+
    10#include <vector>
    \n+
    11#include <functional>
    \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-\n-
    31 {
    \n-
    32 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    33 }
    \n-
    \n-
    34
    \n-
    \n-\n-
    41 {
    \n-
    42 sign0 = sign1 = sign2 = sign3 = 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
    \n-
    60 n0[0] = -1.0;
    \n-
    61 n0[1] = 0.0;
    \n-
    62 n1[0] = 1.0;
    \n-
    63 n1[1] = 0.0;
    \n-
    64 n2[0] = 0.0;
    \n-
    65 n2[1] = -1.0;
    \n-
    66 n3[0] = 0.0;
    \n-
    67 n3[1] = 1.0;
    \n-
    68 }
    \n-
    \n+
    13#include <dune/geometry/type.hh>
    \n+
    14
    \n+\n+\n+\n+\n+
    19
    \n+
    20namespace Dune
    \n+
    21{
    \n+
    22
    \n+
    23 // forward declaration needed by the helper traits
    \n+
    24 template<class DomainType, class RangeType>
    \n+
    25 class LocalInterpolationVirtualInterface;
    \n+
    26
    \n+
    27 // -----------------------------------------------------------------
    \n+
    28 // Helper traits classes
    \n+
    29 // -----------------------------------------------------------------
    \n+
    30
    \n+
    43 template<class FE>
    \n+
    \n+
    44 class
    \n+
    45 [[deprecated("Dune::LocalFiniteElementFunctionBase is deprecated after Dune 2.7. You can now pass functions providing operator() to interpolate.")]]
    \n+\n+
    47 {
    \n+
    48 typedef typename FE::Traits::LocalBasisType::Traits::DomainType Domain;
    \n+
    49 typedef typename FE::Traits::LocalBasisType::Traits::RangeType Range;
    \n+
    50
    \n+
    51 // Hack: Keep a copy of Dune::Function here. This allows to avoid depending
    \n+
    52 // on the deprecated dune-common header while still keeping the LocalFiniteElementFunctionBase
    \n+
    53 // mechanism working during its deprecation period.
    \n+
    54 class FunctionBaseDummy
    \n+
    55 {
    \n+
    56 public:
    \n+
    57
    \n+
    58 using RangeType = Range;
    \n+
    59 using DomainType = Domain;
    \n+
    60
    \n+
    \n+
    61 struct Traits
    \n+
    62 {
    \n+
    63 using RangeType = Range;
    \n+
    64 using DomainType = Domain;
    \n+
    65 };
    \n+
    \n+
    66
    \n+
    67 void evaluate(const DomainType& x, RangeType& y) const;
    \n+
    68 };
    \n
    69
    \n-
    78 template<typename F, typename C>
    \n-
    \n-
    79 void interpolate (const F& ff, std::vector<C>& out) const
    \n-
    80 {
    \n-
    81 // f gives v*outer normal at a point on the edge!
    \n-
    82 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    83 //typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    84
    \n-
    85 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    86
    \n-
    87 out.resize(8);
    \n-
    88 fill(out.begin(), out.end(), 0.0);
    \n-
    89
    \n-
    90 const int qOrder = 4;
    \n-
    91 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    92
    \n-
    93 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n-
    94 it != rule.end(); ++it)
    \n-
    95 {
    \n-
    96 Scalar qPos = it->position();
    \n-
    97 typename LB::Traits::DomainType localPos;
    \n-
    98
    \n-
    99 localPos[0] = 0.0;
    \n-
    100 localPos[1] = qPos;
    \n-
    101 auto y = f(localPos);
    \n-
    102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n-
    103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    104
    \n-
    105 localPos[0] = 1.0;
    \n-
    106 localPos[1] = qPos;
    \n-
    107 y = f(localPos);
    \n-
    108 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;
    \n-
    109 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    110
    \n-
    111 localPos[0] = qPos;
    \n-
    112 localPos[1] = 0.0;
    \n-
    113 y = f(localPos);
    \n-
    114 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n-
    115 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    116
    \n-
    117 localPos[0] = qPos;
    \n-
    118 localPos[1] = 1.0;
    \n-
    119 y = f(localPos);
    \n-
    120 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n-
    121 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    122 }
    \n-
    123 }
    \n-
    \n-
    124
    \n-
    125 private:
    \n-
    126 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n-
    127 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n-
    128 };
    \n+
    70 public:
    \n+
    71
    \n+
    72 using VirtualFunctionBase = FunctionBaseDummy;
    \n+
    73 using FunctionBase = FunctionBaseDummy;
    \n+
    74
    \n+
    80 using type = FunctionBaseDummy;
    \n+
    81 };
    \n
    \n-
    129}
    \n-
    130#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH
    \n+
    82
    \n+
    83
    \n+
    84
    \n+
    85 // -----------------------------------------------------------------
    \n+
    86 // Basis
    \n+
    87 // -----------------------------------------------------------------
    \n+
    88
    \n+
    95 template<class T>
    \n+
    \n+\n+
    97 {
    \n+
    98 public:
    \n+
    99 using Traits = T;
    \n+
    100
    \n+
    101
    \n+\n+
    103
    \n+
    105 virtual unsigned int size () const = 0;
    \n+
    106
    \n+
    108 virtual unsigned int order () const = 0;
    \n+
    109
    \n+
    115 virtual void evaluateFunction (const typename Traits::DomainType& in,
    \n+
    116 std::vector<typename Traits::RangeType>& out) const = 0;
    \n+
    117
    \n+
    126 virtual void evaluateJacobian(const typename Traits::DomainType& in, // position
    \n+
    127 std::vector<typename Traits::JacobianType>& out) const = 0;
    \n+
    128
    \n+
    134 virtual void partial(const std::array<unsigned int,Traits::dimDomain>& order,
    \n+
    135 const typename Traits::DomainType& in,
    \n+
    136 std::vector<typename Traits::RangeType>& out) const = 0;
    \n+
    137 };
    \n+
    \n+
    138
    \n+
    139
    \n+
    140
    \n+
    141 // -----------------------------------------------------------------
    \n+
    142 // Interpolation
    \n+
    143 // -----------------------------------------------------------------
    \n+
    144
    \n+
    157 template<class DomainType, class RangeType>
    \n+
    \n+\n+
    159 {
    \n+
    160 public:
    \n+
    161
    \n+
    163 using FunctionType = std::function<RangeType(DomainType)>;
    \n+
    164
    \n+
    166 typedef typename RangeType::field_type CoefficientType;
    \n+
    167
    \n+\n+
    169
    \n+
    177 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n+
    178 };
    \n+
    \n+
    179
    \n+
    187 template<class DomainType, class RangeType>
    \n+
    \n+\n+
    189 : public LocalInterpolationVirtualInterfaceBase<DomainType, RangeType>
    \n+
    190 {
    \n+
    191 public:
    \n+
    192
    \n+
    194 using FunctionType = std::function<RangeType(DomainType)>;
    \n+
    195
    \n+
    197 typedef typename RangeType::field_type CoefficientType;
    \n+
    198
    \n+
    199
    \n+\n+
    201
    \n+
    202 // This method is only noted again for to make the documentation complete.
    \n+
    203
    \n+
    211 virtual void interpolate (const FunctionType& f, std::vector<CoefficientType>& out) const = 0;
    \n+
    212
    \n+
    218 template<class F,
    \n+
    219 std::enable_if_t<not std::is_base_of<FunctionType, F>::value, int> = 0>
    \n+
    \n+
    220 void interpolate (const F& ff, std::vector<CoefficientType>& out) const
    \n+
    221 {
    \n+
    222 const auto& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n+
    223
    \n+\n+
    225 asBase.interpolate(FunctionType(std::cref(f)),out);
    \n+
    226 }
    \n+
    \n+
    227
    \n+
    233 template<class F, class C>
    \n+
    \n+
    234 void interpolate (const F& ff, std::vector<C>& out) const
    \n+
    235 {
    \n+
    236 const auto& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
    \n+
    237
    \n+
    238 std::vector<CoefficientType> outDummy;
    \n+\n+
    240 asBase.interpolate(FunctionType(std::cref(f)),outDummy);
    \n+
    241 out.resize(outDummy.size());
    \n+
    242 for(typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
    \n+
    243 out[i] = outDummy[i];
    \n+
    244 }
    \n+
    \n+
    245 };
    \n+
    \n+
    246
    \n+
    247
    \n+
    248
    \n+
    249 // -----------------------------------------------------------------
    \n+
    250 // Coefficients
    \n+
    251 // -----------------------------------------------------------------
    \n+
    252
    \n+
    \n+\n+
    259 {
    \n+
    260 public:
    \n+
    261
    \n+\n+
    263
    \n+
    265 virtual std::size_t size () const = 0;
    \n+
    266
    \n+
    268 const virtual LocalKey& localKey (std::size_t i) const = 0;
    \n+
    269
    \n+
    270 };
    \n+
    \n+
    271
    \n+
    272
    \n+
    273
    \n+
    274 // -----------------------------------------------------------------
    \n+
    275 // Finite Element
    \n+
    276 // -----------------------------------------------------------------
    \n+
    277
    \n+
    278
    \n+
    284 template<class T>
    \n+
    \n+\n+
    286 {
    \n+
    287 using LocalBasisTraits = T;
    \n+
    288 public:
    \n+\n+\n+\n+\n+\n+\n+
    295
    \n+\n+
    297
    \n+
    299 virtual const typename Traits::LocalBasisType& localBasis () const = 0;
    \n+
    300
    \n+
    302 virtual const typename Traits::LocalCoefficientsType& localCoefficients () const = 0;
    \n+
    303
    \n+
    305 virtual const typename Traits::LocalInterpolationType& localInterpolation () const = 0;
    \n+
    306
    \n+
    308 virtual unsigned int size () const = 0;
    \n+
    309
    \n+
    311 virtual const GeometryType type () const = 0;
    \n+
    312
    \n+\n+
    314 };
    \n+
    \n+
    315}
    \n+
    316#endif
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n-
    First order Brezzi-Douglas-Marini shape functions on the reference quadrilateral.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:26
    \n-
    BDM1Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:40
    \n-
    BDM1Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:30
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini1cube2dlocalinterpolation.hh:79
    \n+
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    R RangeType
    range type
    Definition common/localbasis.hh:51
    \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:23
    \n+
    virtual base class for a local interpolation
    Definition virtualinterface.hh:190
    \n+
    virtual ~LocalInterpolationVirtualInterface()
    Definition virtualinterface.hh:200
    \n+
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:194
    \n+
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:197
    \n+
    void interpolate(const F &ff, std::vector< CoefficientType > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:220
    \n+
    virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
    determine coefficients interpolating a given function
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    determine coefficients interpolating a given function
    Definition virtualinterface.hh:234
    \n+
    Return a proper base class for functions to use with LocalInterpolation.
    Definition virtualinterface.hh:47
    \n+
    FunctionBaseDummy FunctionBase
    Definition virtualinterface.hh:73
    \n+
    FunctionBaseDummy VirtualFunctionBase
    Definition virtualinterface.hh:72
    \n+
    FunctionBaseDummy type
    Base class type for functions to use with LocalInterpolation.
    Definition virtualinterface.hh:80
    \n+\n+\n+
    Domain DomainType
    Definition virtualinterface.hh:64
    \n+
    virtual base class for a local basis
    Definition virtualinterface.hh:97
    \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:99
    \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:102
    \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:159
    \n+
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:163
    \n+
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:166
    \n+
    virtual ~LocalInterpolationVirtualInterfaceBase()
    Definition virtualinterface.hh:168
    \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:259
    \n+
    virtual ~LocalCoefficientsVirtualInterface()
    Definition virtualinterface.hh:262
    \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:286
    \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:294
    \n+
    virtual ~LocalFiniteElementVirtualInterface()
    Definition virtualinterface.hh:296
    \n+
    virtual const Traits::LocalCoefficientsType & localCoefficients() const =0
    \n+\n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,143 +1,390 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\bc_\bo_\bm_\bm_\bo_\bn\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 (C) 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_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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-15\n-24 template\n-_\b2_\b5 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-26 {\n-27\n-28 public:\n-_\b3_\b0 _\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-31 {\n-32 sign0 = sign1 = sign2 = sign3 = 1.0;\n-33 }\n-34\n-_\b4_\b0 _\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-41 {\n-42 sign0 = sign1 = sign2 = sign3 = 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\n-60 n0[0] = -1.0;\n-61 n0[1] = 0.0;\n-62 n1[0] = 1.0;\n-63 n1[1] = 0.0;\n-64 n2[0] = 0.0;\n-65 n2[1] = -1.0;\n-66 n3[0] = 0.0;\n-67 n3[1] = 1.0;\n-68 }\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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_\bk_\be_\by_\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\n+20namespace _\bD_\bu_\bn_\be\n+21{\n+22\n+23 // forward declaration needed by the helper traits\n+24 template\n+25 class LocalInterpolationVirtualInterface;\n+26\n+27 // -----------------------------------------------------------------\n+28 // Helper traits classes\n+29 // -----------------------------------------------------------------\n+30\n+43 template\n+_\b4_\b4 class\n+45 [[deprecated(\"Dune::LocalFiniteElementFunctionBase is deprecated after Dune\n+2.7. You can now pass functions providing operator() to interpolate.\")]]\n+46 _\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+47 {\n+48 typedef typename FE::Traits::LocalBasisType::Traits::DomainType Domain;\n+49 typedef typename FE::Traits::LocalBasisType::Traits::RangeType Range;\n+50\n+51 // Hack: Keep a copy of Dune::Function here. This allows to avoid depending\n+52 // on the deprecated dune-common header while still keeping the\n+LocalFiniteElementFunctionBase\n+53 // mechanism working during its deprecation period.\n+54 class FunctionBaseDummy\n+55 {\n+56 public:\n+57\n+58 using RangeType = Range;\n+59 using DomainType = Domain;\n+60\n+_\b6_\b1 struct _\bT_\br_\ba_\bi_\bt_\bs\n+62 {\n+_\b6_\b3 using _\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be = Range;\n+_\b6_\b4 using _\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be = Domain;\n+65 };\n+66\n+67 void evaluate(const DomainType& x, RangeType& y) const;\n+68 };\n 69\n-78 template\n-_\b7_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n-80 {\n-81 // f gives v*outer normal at a point on the edge!\n-82 typedef typename LB::Traits::RangeFieldType Scalar;\n-83 //typedef typename LB::Traits::DomainFieldType Vector;\n+70 public:\n+71\n+_\b7_\b2 using _\bV_\bi_\br_\bt_\bu_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be = FunctionBaseDummy;\n+_\b7_\b3 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be = FunctionBaseDummy;\n+74\n+_\b8_\b0 using _\bt_\by_\bp_\be = FunctionBaseDummy;\n+81 };\n+82\n+83\n 84\n-85 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-86\n-87 out.resize(8);\n-88 fill(out.begin(), out.end(), 0.0);\n-89\n-90 const int qOrder = 4;\n-91 const QuadratureRule& rule = QuadratureRules::rule\n-(GeometryTypes::cube(1), qOrder);\n-92\n-93 for (typename QuadratureRule::const_iterator it = rule.begin();\n-94 it != rule.end(); ++it)\n-95 {\n-96 Scalar qPos = it->position();\n-97 typename LB::Traits::DomainType localPos;\n-98\n-99 localPos[0] = 0.0;\n-100 localPos[1] = qPos;\n-101 auto y = f(localPos);\n-102 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n-103 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n-104\n-105 localPos[0] = 1.0;\n-106 localPos[1] = qPos;\n-107 y = f(localPos);\n-108 out[2] += (y[0]*n1[0] + y[1]*n1[1])*it->weight()*sign1;\n-109 out[3] += (y[0]*n1[0] + y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n-110\n-111 localPos[0] = qPos;\n-112 localPos[1] = 0.0;\n-113 y = f(localPos);\n-114 out[4] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n-115 out[5] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n-116\n-117 localPos[0] = qPos;\n-118 localPos[1] = 1.0;\n-119 y = f(localPos);\n-120 out[6] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n-121 out[7] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n-122 }\n-123 }\n-124\n-125 private:\n-126 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n-127 typename LB::Traits::DomainType n0, n1, n2, n3;\n-128 };\n-129}\n-130#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI1_CUBE2D_LOCALINTERPOLATION_HH\n+85 // -----------------------------------------------------------------\n+86 // Basis\n+87 // -----------------------------------------------------------------\n+88\n+95 template\n+_\b9_\b6 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+97 {\n+98 public:\n+_\b9_\b9 using _\bT_\br_\ba_\bi_\bt_\bs = T;\n+100\n+101\n+_\b1_\b0_\b2 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+103\n+_\b1_\b0_\b5 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n+106\n+_\b1_\b0_\b8 virtual unsigned int _\bo_\br_\bd_\be_\br () const = 0;\n+109\n+_\b1_\b1_\b5 virtual void _\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn (const typename Traits::DomainType& in,\n+116 std::vector& out) const = 0;\n+117\n+_\b1_\b2_\b6 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+127 std::vector& out) const = 0;\n+128\n+_\b1_\b3_\b4 virtual void _\bp_\ba_\br_\bt_\bi_\ba_\bl(const std::array&\n+_\bo_\br_\bd_\be_\br,\n+135 const typename Traits::DomainType& in,\n+136 std::vector& out) const = 0;\n+137 };\n+138\n+139\n+140\n+141 // -----------------------------------------------------------------\n+142 // Interpolation\n+143 // -----------------------------------------------------------------\n+144\n+157 template\n+_\b1_\b5_\b8 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+159 {\n+160 public:\n+161\n+_\b1_\b6_\b3 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\n+164\n+_\b1_\b6_\b6 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n+167\n+_\b1_\b6_\b8 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+169\n+_\b1_\b7_\b7 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+178 };\n+179\n+187 template\n+_\b1_\b8_\b8 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+189 : 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+190 {\n+191 public:\n+192\n+_\b1_\b9_\b4 using _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bT_\by_\bp_\be = std::function;\n+195\n+_\b1_\b9_\b7 typedef typename RangeType::field_type _\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bT_\by_\bp_\be;\n+198\n+199\n+_\b2_\b0_\b0 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+201\n+202 // This method is only noted again for to make the documentation complete.\n+203\n+_\b2_\b1_\b1 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+212\n+218 template::value, int> = 0>\n+_\b2_\b2_\b0 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+221 {\n+222 const auto& f = Impl::makeFunctionWithCallOperator(ff);\n+223\n+224 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+225 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+226 }\n+227\n+233 template\n+_\b2_\b3_\b4 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be (const F& ff, std::vector& out) const\n+235 {\n+236 const auto& f = Impl::makeFunctionWithCallOperator(ff);\n+237\n+238 std::vector outDummy;\n+239 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+240 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+241 out.resize(outDummy.size());\n+242 for(typename std::vector::size_type i=0; i\n+_\b2_\b8_\b5 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+286 {\n+287 using LocalBasisTraits = T;\n+288 public:\n+289 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+290 _\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+291 _\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+292 _\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+293 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_\b9_\b4 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+295\n+_\b2_\b9_\b6 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+297\n+_\b2_\b9_\b9 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+300\n+_\b3_\b0_\b2 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+303\n+_\b3_\b0_\b5 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+306\n+_\b3_\b0_\b8 virtual unsigned int _\bs_\bi_\bz_\be () const = 0;\n+309\n+_\b3_\b1_\b1 virtual const GeometryType _\bt_\by_\bp_\be () const = 0;\n+312\n+_\b3_\b1_\b3 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+314 };\n+315}\n+316#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:_\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:26\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:40\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:30\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+_\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:42\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:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\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:23\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:190\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:200\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:194\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:197\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 &ff, 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:220\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 &ff, 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:79\n+determine coefficients interpolating a given function\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:234\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+Return a proper base class for functions to use with LocalInterpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.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_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+FunctionBaseDummy FunctionBase\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:73\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bV_\bi_\br_\bt_\bu_\ba_\bl_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be\n+FunctionBaseDummy VirtualFunctionBase\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:72\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bt_\by_\bp_\be\n+FunctionBaseDummy type\n+Base class type for functions to use with LocalInterpolation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:80\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:62\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bR_\ba_\bn_\bg_\be_\bT_\by_\bp_\be\n+Range RangeType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:63\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bF_\bi_\bn_\bi_\bt_\be_\bE_\bl_\be_\bm_\be_\bn_\bt_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\b:_\b:_\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bB_\ba_\bs_\be_\bD_\bu_\bm_\bm_\by_\b:_\b:_\bT_\br_\ba_\bi_\bt_\bs_\b:_\b:_\bD_\bo_\bm_\ba_\bi_\bn_\bT_\by_\bp_\be\n+Domain DomainType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn virtualinterface.hh:64\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:97\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:99\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: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_\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:159\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: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_\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:166\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: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_\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:259\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:262\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:286\n+_\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:294\n+_\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:296\n+_\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 _\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/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: brezzidouglasmarini2simplex2d.hh File Reference\n+dune-localfunctions: interfaceswitch.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-
    brezzidouglasmarini2simplex2d.hh File Reference
    \n+
    interfaceswitch.hh File Reference
    \n
    \n
    \n-
    #include <dune/geometry/type.hh>
    \n-#include "../common/localfiniteelementtraits.hh"
    \n-#include "brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalbasis.hh"
    \n-#include "brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalcoefficients.hh"
    \n-#include "brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalinterpolation.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 \n \n-\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...
    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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,30 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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 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+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/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: brezzidouglasmarini2simplex2d.hh Source File\n+dune-localfunctions: interfaceswitch.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,198 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2simplex2d.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 (C) 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-
    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::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+
    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-
    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: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+
    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,143 +1,230 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-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-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_\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+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:_\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: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:_\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/a00551.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00551.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube3d.hh File Reference\n+dune-localfunctions: localfiniteelementvariantcache.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,42 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini1cube3d.hh File Reference
    \n+
    localfiniteelementvariantcache.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 <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
    \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::LocalFiniteElementVariantCache< Base >
     A cache storing a compile time selection of local finite element implementations. More...
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,31 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini1cube3d.hh File Reference\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 \"_\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+#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-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+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 _\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/a00551_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00551_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: localfiniteelementvariantcache.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,138 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube3d.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 (C) 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_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_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+
    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-
    \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+
    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+
    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+
    120 template<class... Key>
    \n+
    \n+
    121 const auto& get(const Key&... key) const
    \n+
    122 {
    \n+
    123 auto implIndex = index(key...);
    \n+
    124 if (implIndex >= cache_.size())
    \n+
    125 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n+
    126 if (not(cache_[implIndex]))
    \n+
    127 DUNE_THROW(Dune::RangeError,"There is no LocalFiniteElement of the requested type.");
    \n+
    128 return cache_[implIndex];
    \n+
    129 }
    \n+
    \n+
    130
    \n+
    131private:
    \n+
    132 std::vector<FiniteElementType> cache_;
    \n+
    133};
    \n+
    \n+
    134
    \n+
    135
    \n+
    136
    \n+
    137} // namespace Dune
    \n+
    138
    \n+
    139
    \n+
    140
    \n+
    141
    \n+
    142#endif // DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \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+
    A cache storing a compile time selection of local finite element implementations.
    Definition localfiniteelementvariantcache.hh:68
    \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:121
    \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,139 +1,148 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_COMMON_LOCALFINITEELEMENTVARIANTCACHE_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANTCACHE_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-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-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+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-_\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+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+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+120 template\n+_\b1_\b2_\b1 const auto& _\bg_\be_\bt(const Key&... key) const\n+122 {\n+123 auto implIndex = index(key...);\n+124 if (implIndex >= cache_.size())\n+125 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n+requested type.\");\n+126 if (not(cache_[implIndex]))\n+127 DUNE_THROW(Dune::RangeError,\"There is no LocalFiniteElement of the\n+requested type.\");\n+128 return cache_[implIndex];\n+129 }\n+130\n+131private:\n+132 std::vector cache_;\n+133};\n+134\n+135\n+136\n+137} // namespace Dune\n+138\n+139\n+140\n+141\n+142#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:_\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:_\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:_\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:121\n+_\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/a00554.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference\n+dune-localfunctions: localfiniteelementvariant.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-
    brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference
    \n+
    localfiniteelementvariant.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n-#include <vector>
    \n-#include "../../common/localkey.hh"
    \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 Classes

    class  Dune::BDM2Cube2DLocalCoefficients
     Layout map for Brezzi-Douglas-Marini-2 elements on quadrilaterals. More...
    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.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini2cube2dlocalcoefficients.hh File Reference\n+localfiniteelementvariant.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 \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-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:_\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/a00554_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00554_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: localfiniteelementvariant.hh Source File\n \n \n \n \n \n \n \n@@ -70,81 +70,387 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2dlocalcoefficients.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 (C) 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_COMMON_LOCALFINITEELEMENTVARIANT_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_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+
    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-
    \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+
    16#include <dune/geometry/type.hh>
    \n+
    17
    \n+\n+\n+\n+
    21
    \n+
    22
    \n+
    23namespace Dune {
    \n+
    24
    \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<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-
    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+
    Type traits for LocalBasisVirtualInterface.
    Definition common/localbasis.hh:34
    \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:23
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,80 +1,423 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_COMMON_LOCALFINITEELEMENTVARIANT_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_LOCALFINITEELEMENTVARIANT_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+9#include \n+10#include \n+11\n+12#include \n+13#include \n+14#include \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+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+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\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:_\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 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_\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:34\n+_\bD_\bu_\bn_\be_\b:_\b:_\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:23\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/a00557.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00557.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalinterpolation.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-
    brezzidouglasmarini2cube2dlocalinterpolation.hh File Reference
    \n+
    localfiniteelementtraits.hh File Reference
    \n
    \n
    \n-
    #include <vector>
    \n-#include <dune/geometry/quadraturerules.hh>
    \n-#include <dune/localfunctions/common/localinterpolation.hh>
    \n-
    \n+\n

    Go to the source code of this file.

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

    \n Classes

    class  Dune::BDM2Cube2DLocalInterpolation< LB >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. 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.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini2cube2dlocalinterpolation.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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\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:_\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+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/a00557_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00557_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: localfiniteelementtraits.hh Source File\n \n \n \n \n \n \n \n@@ -70,157 +70,50 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2dlocalinterpolation.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 (C) 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_LOCALFINITEELEMENTTRAITS_HH
    \n+
    6#define DUNE_LOCALFINITEELEMENTTRAITS_HH
    \n
    7
    \n-
    8#include <vector>
    \n+
    8namespace Dune {
    \n
    9
    \n-
    10#include <dune/geometry/quadraturerules.hh>
    \n-\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-\n-
    31 {
    \n-
    32 sign0 = sign1 = sign2 = sign3 = 1.0;
    \n-
    33 }
    \n-
    \n-
    34
    \n-
    \n-\n-
    41 {
    \n-
    42 sign0 = sign1 = sign2 = sign3 = 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
    \n-
    60 n0[0] = -1.0;
    \n-
    61 n0[1] = 0.0;
    \n-
    62 n1[0] = 1.0;
    \n-
    63 n1[1] = 0.0;
    \n-
    64 n2[0] = 0.0;
    \n-
    65 n2[1] = -1.0;
    \n-
    66 n3[0] = 0.0;
    \n-
    67 n3[1] = 1.0;
    \n-
    68 }
    \n-
    \n-
    69
    \n-
    78 template<typename F, typename C>
    \n-
    \n-
    79 void interpolate(const F& ff, std::vector<C>& out) const
    \n-
    80 {
    \n-
    81 // f gives v*outer normal at a point on the edge!
    \n-
    82 typedef typename LB::Traits::RangeFieldType Scalar;
    \n-
    83 typedef typename LB::Traits::DomainFieldType Vector;
    \n-
    84
    \n-
    85 auto&& f = Impl::makeFunctionWithCallOperator<typename LB::Traits::DomainType>(ff);
    \n-
    86
    \n-
    87 out.resize(14);
    \n-
    88 fill(out.begin(), out.end(), 0.0);
    \n-
    89
    \n-
    90 const int qOrder = 4;
    \n-
    91 const QuadratureRule<Scalar,1>& rule = QuadratureRules<Scalar,1>::rule(GeometryTypes::cube(1), qOrder);
    \n-
    92
    \n-
    93 for (typename QuadratureRule<Scalar,1>::const_iterator it = rule.begin();
    \n-
    94 it != rule.end(); ++it)
    \n-
    95 {
    \n-
    96 Scalar qPos = it->position();
    \n-
    97
    \n-
    98 typename LB::Traits::DomainType localPos;
    \n-
    99
    \n-
    100 localPos[0] = 0.0;
    \n-
    101 localPos[1] = qPos;
    \n-
    102 auto y = f(localPos);
    \n-
    103 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;
    \n-
    104 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    105 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign0;
    \n-
    106
    \n-
    107 localPos[0] = 1.0;
    \n-
    108 localPos[1] = qPos;
    \n-
    109 y = f(localPos);
    \n-
    110 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;
    \n-
    111 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    112 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign1;
    \n-
    113
    \n-
    114 localPos[0] = qPos;
    \n-
    115 localPos[1] = 0.0;
    \n-
    116 y = f(localPos);
    \n-
    117 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;
    \n-
    118 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();
    \n-
    119 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign2;
    \n-
    120
    \n-
    121 localPos[0] = qPos;
    \n-
    122 localPos[1] = 1.0;
    \n-
    123 y = f(localPos);
    \n-
    124 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;
    \n-
    125 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();
    \n-
    126 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it->weight()*sign3;
    \n-
    127 }
    \n-
    128
    \n-
    129 const QuadratureRule<Vector,2>& rule2 = QuadratureRules<Vector,2>::rule(GeometryTypes::cube(2), qOrder);
    \n-
    130
    \n-
    131 for (typename QuadratureRule<Vector,2>::const_iterator it=rule2.begin(); it!=rule2.end(); ++it)
    \n-
    132 {
    \n-
    133 auto y = f(it->position());
    \n-
    134 out[12] += y[0]*it->weight();
    \n-
    135 out[13] += y[1]*it->weight();
    \n-
    136 }
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    139 private:
    \n-
    140 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;
    \n-
    141 typename LB::Traits::DomainType n0, n1, n2, n3;
    \n-
    142 };
    \n-
    \n-
    143} // end namespace Dune
    \n-
    144#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH
    \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-
    First order Brezzi-Douglas-Marini shape functions on quadrilaterals.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:26
    \n-
    BDM2Cube2DLocalInterpolation(unsigned int s)
    Make set number s, where 0 <= s < 16.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:40
    \n-
    BDM2Cube2DLocalInterpolation()
    Standard constructor.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:30
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Interpolate a given function with shape functions.
    Definition brezzidouglasmarini2cube2dlocalinterpolation.hh:79
    \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
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,162 +1,48 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_LOCALFINITEELEMENTTRAITS_HH\n+6#define DUNE_LOCALFINITEELEMENTTRAITS_HH\n 7\n-8#include \n+8namespace _\bD_\bu_\bn_\be {\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\bh>\n-12\n-13namespace _\bD_\bu_\bn_\be\n-14{\n-15\n-24 template\n-_\b2_\b5 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-26 {\n-27\n-28 public:\n-_\b3_\b0 _\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-31 {\n-32 sign0 = sign1 = sign2 = sign3 = 1.0;\n-33 }\n-34\n-_\b4_\b0 _\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-41 {\n-42 sign0 = sign1 = sign2 = sign3 = 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\n-60 n0[0] = -1.0;\n-61 n0[1] = 0.0;\n-62 n1[0] = 1.0;\n-63 n1[1] = 0.0;\n-64 n2[0] = 0.0;\n-65 n2[1] = -1.0;\n-66 n3[0] = 0.0;\n-67 n3[1] = 1.0;\n-68 }\n-69\n-78 template\n-_\b7_\b9 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& ff, std::vector& out) const\n-80 {\n-81 // f gives v*outer normal at a point on the edge!\n-82 typedef typename LB::Traits::RangeFieldType Scalar;\n-83 typedef typename LB::Traits::DomainFieldType Vector;\n-84\n-85 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n-86\n-87 out.resize(14);\n-88 fill(out.begin(), out.end(), 0.0);\n-89\n-90 const int qOrder = 4;\n-91 const QuadratureRule& rule = QuadratureRules::rule\n-(GeometryTypes::cube(1), qOrder);\n-92\n-93 for (typename QuadratureRule::const_iterator it = rule.begin();\n-94 it != rule.end(); ++it)\n-95 {\n-96 Scalar qPos = it->position();\n-97\n-98 typename LB::Traits::DomainType localPos;\n-99\n-100 localPos[0] = 0.0;\n-101 localPos[1] = qPos;\n-102 auto y = f(localPos);\n-103 out[0] += (y[0]*n0[0] + y[1]*n0[1])*it->weight()*sign0;\n-104 out[1] += (y[0]*n0[0] + y[1]*n0[1])*(2.0*qPos - 1.0)*it->weight();\n-105 out[2] += (y[0]*n0[0] + y[1]*n0[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign0;\n-106\n-107 localPos[0] = 1.0;\n-108 localPos[1] = qPos;\n-109 y = f(localPos);\n-110 out[3] += (y[0]*n1[0]+y[1]*n1[1])*it->weight()*sign1;\n-111 out[4] += (y[0]*n1[0]+y[1]*n1[1])*(1.0 - 2.0*qPos)*it->weight();\n-112 out[5] += (y[0]*n1[0]+y[1]*n1[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign1;\n-113\n-114 localPos[0] = qPos;\n-115 localPos[1] = 0.0;\n-116 y = f(localPos);\n-117 out[6] += (y[0]*n2[0] + y[1]*n2[1])*it->weight()*sign2;\n-118 out[7] += (y[0]*n2[0] + y[1]*n2[1])*(1.0 - 2.0*qPos)*it->weight();\n-119 out[8] += (y[0]*n2[0] + y[1]*n2[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign2;\n-120\n-121 localPos[0] = qPos;\n-122 localPos[1] = 1.0;\n-123 y = f(localPos);\n-124 out[9] += (y[0]*n3[0] + y[1]*n3[1])*it->weight()*sign3;\n-125 out[10] += (y[0]*n3[0] + y[1]*n3[1])*(2.0*qPos - 1.0)*it->weight();\n-126 out[11] += (y[0]*n3[0] + y[1]*n3[1])*(8.0*qPos*qPos - 8.0*qPos + 1.0)*it-\n->weight()*sign3;\n-127 }\n-128\n-129 const QuadratureRule& rule2 = QuadratureRules::rule\n-(GeometryTypes::cube(2), qOrder);\n-130\n-131 for (typename QuadratureRule::const_iterator it=rule2.begin();\n-it!=rule2.end(); ++it)\n-132 {\n-133 auto y = f(it->position());\n-134 out[12] += y[0]*it->weight();\n-135 out[13] += y[1]*it->weight();\n-136 }\n-137 }\n-138\n-139 private:\n-140 typename LB::Traits::RangeFieldType sign0, sign1, sign2, sign3;\n-141 typename LB::Traits::DomainType n0, n1, n2, n3;\n-142 };\n-143} // end namespace Dune\n-144#endif /\n-/ DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALINTERPOLATION_HH\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:_\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:26\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:40\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:30\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 &ff, 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:79\n-_\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_\b:_\b:_\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/a00560.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00560.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini2cube2dlocalbasis.hh File Reference\n+dune-localfunctions: virtualwrappers.hh File Reference\n \n \n \n \n \n \n \n@@ -65,37 +65,48 @@\n \n \n \n \n \n \n \n
    \n \n-
    brezzidouglasmarini2cube2dlocalbasis.hh File Reference
    \n+
    virtualwrappers.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 <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

    \n Classes

    class  Dune::BDM2Cube2DLocalBasis< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
    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", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,39 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-brezzidouglasmarini2cube2dlocalbasis.hh File Reference\n+virtualwrappers.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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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:_\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+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 ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00560_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00560_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: virtualwrappers.hh Source File\n \n \n \n \n \n \n \n@@ -70,320 +70,410 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini2cube2dlocalbasis.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 (C) 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_COMMON_VIRTUALWRAPPERS_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_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+
    9
    \n+\n+\n+\n+
    13
    \n+
    14namespace Dune
    \n+
    15{
    \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-
    \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-
    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-
    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+
    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+
    \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+
    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+
    \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+
    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 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+
    128 protected:
    \n+
    129 const Imp& impl_;
    \n+
    130 };
    \n+
    \n+
    131
    \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+
    133
    \n+
    134 // -----------------------------------------------------------------
    \n+
    135 // Interpolation
    \n+
    136 // -----------------------------------------------------------------
    \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+
    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-
    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+\n+
    154
    \n+
    155 protected:
    \n+
    156
    \n+
    \n+\n+
    159 : impl_(imp) {}
    \n+
    \n+
    160
    \n+
    161 public:
    \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+\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 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+
    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-
    \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+
    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 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+
    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 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 // -----------------------------------------------------------------
    \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 out[1][0] = -6.0 + 6.0*in[0];
    \n-
    245 out[1][1] = 0.0;
    \n+
    244 public:
    \n+
    245 typedef typename Interface::Traits Traits;
    \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+
    254
    \n+\n+
    262
    \n+\n-
    300} // end namespace Dune
    \n-
    301#endif // DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI2_CUBE2D_LOCALBASIS_HH
    \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-
    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:34
    \n
    D DomainType
    domain type
    Definition common/localbasis.hh:42
    \n+
    R RangeType
    range type
    Definition common/localbasis.hh:51
    \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:23
    \n+
    virtual base class for a local interpolation
    Definition virtualinterface.hh:190
    \n+
    std::function< RangeType(DomainType)> FunctionType
    type of function to interpolate
    Definition virtualinterface.hh:194
    \n+
    RangeType::field_type CoefficientType
    type of the coefficient vector in the interpolate method
    Definition virtualinterface.hh:197
    \n+
    virtual base class for a local basis
    Definition virtualinterface.hh:97
    \n+
    virtual base class for local coefficients
    Definition virtualinterface.hh:259
    \n+
    virtual base class for local finite elements with functions
    Definition virtualinterface.hh:286
    \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 contructor 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 \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,350 +1,489 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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_COMMON_VIRTUALWRAPPERS_HH\n+6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_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+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+14namespace _\bD_\bu_\bn_\be\n+15{\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-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-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+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+_\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\n+59\n+60 // -----------------------------------------------------------------\n+61 // Basis\n+62 // -----------------------------------------------------------------\n+63\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+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+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 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+128 protected:\n+_\b1_\b2_\b9 const Imp& _\bi_\bm_\bp_\bl_\b_;\n+130 };\n+131\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+133\n+134 // -----------------------------------------------------------------\n+135 // Interpolation\n+136 // -----------------------------------------------------------------\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+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 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+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-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+_\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 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+173 protected:\n+_\b1_\b7_\b4 const Imp& _\bi_\bm_\bp_\bl_\b_;\n+175\n+176 };\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+178\n+179\n+180 // -----------------------------------------------------------------\n+181 // Coefficients\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+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 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+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 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 // -----------------------------------------------------------------\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 out[1][0] = -6.0 + 6.0*in[0];\n-245 out[1][1] = 0.0;\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-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+_\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-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+_\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 _\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+_\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:42\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:51\n+_\bD_\bu_\bn_\be_\b:_\b:_\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:23\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:190\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:194\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:197\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:97\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:259\n+_\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:286\n+_\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 contructor 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 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+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 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+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 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:34\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:42\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/a00563.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00563.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarinicube.hh File Reference\n+dune-localfunctions: brezzidouglasmarini.hh File Reference\n \n \n \n \n \n \n \n@@ -65,47 +65,25 @@\n
    \n
    \n \n \n \n \n \n
    \n- \n-
    brezzidouglasmarinicube.hh File Reference
    \n+
    brezzidouglasmarini.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-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...
     
    \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,34 +1,13 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarinicube.hh File Reference\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_\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+_\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-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/a00563_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00563_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: brezzidouglasmarini.hh Source File\n \n \n \n \n \n \n \n@@ -70,112 +70,35 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarinicube.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 (C) 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_BREZZIDOUGLASMARINI_HH
    \n+
    6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_HH
    \n
    7
    \n-\n-\n-\n+
    8// BDM implementations with compile-time order
    \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-
    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-
    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+
    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,122 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_BREZZIDOUGLASMARINI_HH\n+6#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASMARINI_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+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_\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_\bs_\bi_\bm_\bp_\bl_\be_\bx_\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-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_\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-_\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-_\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+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_\bc_\bu_\bb_\be_\b._\bh_\bh\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 ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00566.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00566.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: brezzidouglasmarini1cube2d.hh File Reference\n+dune-localfunctions: mimetic.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+
    mimetic.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::BDM1Cube2DLocalFiniteElement< D, R >
     First order Brezzi-Douglas-Marini shape functions on quadrilaterals. More...
    class  Dune::MimeticLocalFiniteElement< D, R, dim >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,20 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-brezzidouglasmarini1cube2d.hh File Reference\n+mimetic.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+#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:_\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+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/a00566_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00566_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: mimetic.hh Source File\n \n \n \n \n \n \n \n@@ -70,123 +70,112 @@\n
    \n \n \n \n \n \n \n
    \n-
    brezzidouglasmarini1cube2d.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 (C) 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_MIMETICLOCALFINITEELEMENT_HH
    \n+
    6#define DUNE_MIMETICLOCALFINITEELEMENT_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+
    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
    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+
    \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-
    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: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+
    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,141 +1,122 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+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 (C) 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_MIMETICLOCALFINITEELEMENT_HH\n+6#define DUNE_MIMETICLOCALFINITEELEMENT_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_\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-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+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 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_\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+_\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:_\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-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: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:_\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/a01405.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01405.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/a01425.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01425.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/a01433.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01433.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/a01437.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01437.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM1Cube2DLocalBasis< D, R > 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/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/a01441.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01441.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM1Cube2DLocalCoefficients Class Reference
    \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/a01445.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01445.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/a01449.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01449.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/a01453.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01453.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM1Cube3DLocalBasis< D, R > 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/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/a01457.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01457.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM1Cube3DLocalCoefficients Class Reference
    \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/a01461.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01461.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/a01465.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01465.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/a01469.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01469.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/a01473.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01473.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM1Simplex2DLocalCoefficients Class Reference
    \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/a01477.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01477.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/a01481.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01481.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/a01485.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01485.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM2Cube2DLocalBasis< 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/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/a01489.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01489.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM2Cube2DLocalCoefficients Class Reference
    \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/a01493.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01493.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/a01497.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01497.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/a01501.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01501.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/a01505.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01505.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::BDM2Simplex2DLocalCoefficients Class Reference
    \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/a01509.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01509.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/a01513.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01513.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/a01517.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01517.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/a01521.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01521.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/a01525.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01525.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/a01529.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01529.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/a01533.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01533.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/a01537.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01537.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/a01541.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01541.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/a01545.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01545.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/a01549.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01549.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/a01553.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01553.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/a01557.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01557.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/a01561.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01561.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/a01565.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01565.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/a01569.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01569.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/a01573.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01573.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/a01581.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01581.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/a01601.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01601.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/a01609.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01609.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@@ -283,15 +283,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/a01629.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01629.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalKey Class Reference
    \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/a01633.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01633.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/a01637.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01637.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/a01641.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01641.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/a01645.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01645.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/a01649.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01649.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/a01653.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01653.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/a01657.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01657.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/a01661.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01661.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::LocalFiniteElementFunctionBase< FE > Class Template Reference
    \n \n
    \n \n

    Return a proper base class for functions to use with LocalInterpolation. \n More...

    \n \n-

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

    \n+

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

    \n \n \n \n \n \n \n@@ -155,15 +155,15 @@\n \n

    \n Public Types

    using VirtualFunctionBase = FunctionBaseDummy
     
    using FunctionBase = FunctionBaseDummy
     
    \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/a01669.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01669.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::LocalFiniteElementFunctionBase< FE >::FunctionBaseDummy::Traits Struct Reference
    \n \n
    \n \n-

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

    \n+

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

    \n \n \n \n \n \n \n@@ -119,15 +119,15 @@\n \n

    \n Public Types

    using RangeType = Range
     
    using DomainType = Domain
     
    \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/a01673.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01673.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/a01677.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01677.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/a01681.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01681.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/a01685.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01685.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/a01689.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01689.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/a01693.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01693.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/a01701.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01701.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/a01705.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01705.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/a01709.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01709.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/a01713.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01713.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/a01729.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01729.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/a01733.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01733.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/a01737.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01737.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/a01741.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01741.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/a01745.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01745.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/a01749.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01749.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/a01753.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01753.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/a01757.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01757.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/a01761.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01761.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/a01765.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01765.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/a01769.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01769.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/a01773.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01773.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/a01777.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01777.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/a01781.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01781.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/a01785.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01785.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/a01789.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01789.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/a01793.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01793.html", "unified_diff": "@@ -78,15 +78,15 @@\n Public Member Functions |\n Static Public Member Functions |\n List of all members \n
    Dune::HierarchicalP2WithElementBubbleLocalFiniteElement< 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/a01797.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01797.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, dim > Class Template Reference
    \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/a01801.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01801.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 1 > Class Template Reference
    \n \n
    \n \n

    Hierarchical P2 basis in 1d. \n More...

    \n \n-

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh>

    \n+

    #include <dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.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@@ -323,15 +323,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/a01805.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01805.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< 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@@ -324,15 +324,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/a01809.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01809.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< 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@@ -324,15 +324,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/a01813.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01813.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients< dim > Class Template Reference
    \n \n
    \n \n \n \n \n \n@@ -202,15 +202,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/a01817.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01817.html", "unified_diff": "@@ -76,15 +76,15 @@\n \n
    Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation< LB > 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 >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -140,15 +140,15 @@\n \n

    Local interpolation of a function.

    \n
    Todo:
    Hack: extract the proper types
    \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/a01821.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01821.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 Public Member Functions

     HierarchicalSimplexP2WithElementBubbleLocalCoefficients ()
     Standard constructor.
     
    size_t size () const
    \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/a01825.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01825.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/a01829.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01829.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/a01833.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01833.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/a01837.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01837.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/a01841.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01841.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
    \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/a01845.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01845.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/a01849.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01849.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/a01853.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01853.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@@ -273,15 +273,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/a01857.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01857.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/a01861.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01861.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/a01877.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01877.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@@ -332,15 +332,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/a01913.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01913.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@@ -321,15 +321,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/a01929.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01929.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@@ -335,15 +335,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/a01945.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01945.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/a01949.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01949.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/a01953.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01953.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::P0LocalBasis< D, R, d > Class Template Reference
    \n \n
    \n \n

    Constant shape function. \n More...

    \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@@ -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/a01957.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01957.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::P0LocalCoefficients Class Reference
    \n \n
    \n \n

    Layout map for P0 elements. \n More...

    \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@@ -227,15 +227,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/a01961.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01961.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/a01965.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01965.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/a01969.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01969.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/a01973.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01973.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/a01977.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01977.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/a01981.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01981.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/a01985.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01985.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/a01989.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01989.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/a01993.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01993.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/a01997.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a01997.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/a02001.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02001.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/a02005.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02005.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/a02009.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02009.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/a02013.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02013.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/a02017.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02017.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/a02021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02021.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/a02025.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02025.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/a02029.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02029.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/a02033.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02033.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/a02037.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02037.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/a02041.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02041.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/a02049.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02049.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/a02053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02053.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/a02057.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02057.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/a02061.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02061.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/a02065.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02065.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/a02069.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02069.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/a02073.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02073.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/a02077.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02077.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/a02081.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02081.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/a02085.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02085.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/a02089.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02089.html", "unified_diff": "@@ -81,15 +81,15 @@\n
    Dune::MonomialLocalBasis< D, R, d, p > Class Template Reference
    \n \n
    \n \n

    Constant shape function. \n More...

    \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@@ -337,15 +337,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/a02097.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02097.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/a02113.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02113.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/a02129.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02129.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/a02133.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02133.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@@ -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/a02137.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02137.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/a02141.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02141.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/a02145.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02145.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/a02149.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02149.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/a02169.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02169.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@@ -494,15 +494,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/a02173.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02173.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/a02177.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02177.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/a02181.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02181.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/a02185.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02185.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/a02189.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02189.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/a02193.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02193.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/a02197.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02197.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/a02201.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02201.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@@ -539,15 +539,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/a02205.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02205.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/a02209.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02209.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/a02213.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02213.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/a02217.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02217.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/a02221.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02221.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/a02225.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02225.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/a02229.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02229.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/a02233.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02233.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 &ff, 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/a02237.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02237.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/a02241.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02241.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT02DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    Lowest order Raviart-Thomas shape functions on the reference triangle. \n More...

    \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@@ -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/a02245.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02245.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT02DLocalCoefficients Class Reference
    \n \n
    \n \n

    Layout map for RT0 elements. \n More...

    \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@@ -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/a02249.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02249.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/a02253.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02253.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/a02257.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02257.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT03DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    Lowest order Raviart-Thomas shape functions on the reference tetrahedron. \n More...

    \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@@ -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/a02261.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02261.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT03DLocalCoefficients Class Reference
    \n \n
    \n \n

    Layout map for RT0 elements. \n More...

    \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@@ -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/a02265.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02265.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@@ -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/a02269.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02269.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/a02273.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02273.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0Cube2DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    Lowest order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \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@@ -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/a02277.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02277.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT0Cube2DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    Lowest order Raviart-Thomas shape functions on the reference quadrilateral. \n More...

    \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@@ -182,15 +182,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/a02281.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02281.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0Cube2DLocalCoefficients Class Reference
    \n \n
    \n \n

    Layout map for RT0 elements on quadrilaterals. \n More...

    \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@@ -227,15 +227,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/a02285.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02285.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/a02289.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02289.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0Cube3DLocalBasis< D, R > Class Template Reference
    \n \n
    \n \n

    Lowest order Raviart-Thomas shape functions on the reference hexahedron. \n More...

    \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@@ -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/a02293.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02293.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT0Cube3DLocalInterpolation< LB > Class Template Reference
    \n \n
    \n \n

    Lowest order Raviart-Thomas shape functions on the reference hexahedron. \n More...

    \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@@ -182,15 +182,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/a02297.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02297.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0Cube3DLocalCoefficients Class Reference
    \n \n
    \n \n

    Layout map for RT0 elements on quadrilaterals. \n More...

    \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@@ -227,15 +227,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/a02301.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02301.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/a02305.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02305.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/a02309.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02309.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0PrismLocalCoefficients Class Reference
    \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/a02313.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02313.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/a02317.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02317.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/a02321.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02321.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/a02325.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02325.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT0PyramidLocalCoefficients Class Reference
    \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/a02329.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02329.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/a02333.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02333.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/a02337.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02337.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT12DLocalBasis< D, R > Class Template Reference
    \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/a02341.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02341.html", "unified_diff": "@@ -79,15 +79,15 @@\n
    Dune::RT12DLocalCoefficients Class Reference
    \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/a02345.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02345.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/a02349.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02349.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/a02353.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02353.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/a02357.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02357.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT1Cube2DLocalCoefficients Class Reference
    \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/a02361.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02361.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/a02365.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02365.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/a02369.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02369.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/a02373.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02373.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT1Cube3DLocalCoefficients Class Reference
    \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/a02377.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02377.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/a02381.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02381.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/a02385.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02385.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/a02389.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02389.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT2Cube2DLocalCoefficients Class Reference
    \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/a02393.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02393.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/a02397.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02397.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/a02401.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02401.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/a02405.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02405.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT3Cube2DLocalCoefficients Class Reference
    \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/a02409.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02409.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/a02413.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02413.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/a02417.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02417.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/a02421.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02421.html", "unified_diff": "@@ -80,15 +80,15 @@\n
    Dune::RT4Cube2DLocalCoefficients Class Reference
    \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/a02425.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02425.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/a02429.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02429.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/a02433.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02433.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/a02437.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02437.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/a02441.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02441.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/a02445.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02445.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/a02449.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02449.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/a02453.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02453.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/a02457.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02457.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/a02485.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02485.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/a02489.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02489.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/a02493.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02493.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/a02497.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02497.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/a02501.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02501.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/a02509.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02509.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@@ -417,15 +417,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/a02513.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02513.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/a02517.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02517.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/a02521.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02521.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/a02525.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02525.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/a02529.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02529.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/a02533.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02533.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/a02537.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02537.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/a02541.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02541.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/a02545.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02545.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/a02549.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02549.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/a02553.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02553.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/a02557.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02557.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/a02561.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02561.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/a02565.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02565.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/a02569.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02569.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 &ff, 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/a02573.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02573.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 &ff, 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/a02577.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02577.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 &ff, 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/a02581.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02581.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/a02585.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02585.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/a02589.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02589.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/a02593.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02593.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/a02597.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02597.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/a02601.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02601.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/a02605.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02605.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/a02609.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02609.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/a02613.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02613.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/a02617.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02617.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/a02621.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02621.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/a02625.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02625.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@@ -546,15 +546,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/a02629.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02629.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@@ -572,15 +572,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/a02633.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02633.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@@ -572,15 +572,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/a02637.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02637.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@@ -574,15 +574,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/a02641.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02641.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@@ -576,15 +576,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/a02645.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02645.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/a02649.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02649.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/a02653.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02653.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/a02657.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02657.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/a02661.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02661.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/a02665.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02665.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/a02669.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02669.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/a02673.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02673.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/a02677.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02677.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/a02681.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02681.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/a02685.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02685.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/a02689.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02689.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/a02693.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02693.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/a02697.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02697.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/a02701.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02701.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/a02705.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02705.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/a02709.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02709.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/a02713.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02713.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/a02717.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02717.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/a02721.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02721.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/a02725.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02725.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@@ -469,15 +469,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/a02729.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02729.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/a02733.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02733.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/a02737.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02737.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@@ -418,15 +418,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/a02741.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02741.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@@ -389,15 +389,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/a02745.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02745.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/a02749.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02749.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/a02753.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02753.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 Inheritance diagram for Dune::LFEMatrix< F >:
    \n
    \n
    \"Inheritance
    \n \n \"\"\n \"\"\n@@ -510,15 +510,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/a02773.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02773.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/a02777.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02777.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/a02781.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02781.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/a02785.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02785.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/a02789.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02789.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/a02793.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02793.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/a02797.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02797.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/a02801.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02801.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/a02805.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02805.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/a02809.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02809.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/a02813.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02813.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/a02817.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02817.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/a02821.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02821.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/a02825.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02825.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/a02829.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02829.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/a02833.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02833.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/a02837.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02837.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/a02841.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02841.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/a02845.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02845.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/a02849.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02849.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/a02853.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02853.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/a02857.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02857.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/a02861.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02861.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/a02865.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02865.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/a02869.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02869.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/a02873.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02873.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/a02877.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02877.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/a02881.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02881.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/a02885.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02885.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/a02889.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02889.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/a02893.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02893.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/a02897.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02897.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/a02901.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02901.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/a02905.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02905.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/a02909.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02909.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/a02913.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02913.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/a02917.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02917.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/a02921.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02921.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/a02925.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02925.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/a02929.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02929.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/a02933.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02933.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/a02937.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02937.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/a02941.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02941.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/a02945.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02945.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/a02949.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02949.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/a02953.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02953.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/a02957.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02957.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/a02961.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02961.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/a02965.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02965.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/a02969.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02969.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/a02973.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02973.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/a02977.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02977.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/a02981.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02981.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/a02985.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02985.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/a02989.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02989.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/a02993.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02993.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/a02997.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a02997.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/a04473.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04473.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: rannacherturek.hh File Reference\n+dune-localfunctions: basis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,39 @@\n \n \n \n \n \n \n \n
    \n \n-
    rannacherturek.hh File Reference
    \n+
    basis.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 <numeric>
    \n+#include <cstddef>
    \n+#include <vector>
    \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

    struct  Dune::RannacherTurekLocalFiniteElement< D, R, d >
     Rannacher-Turek shape functions. More...
    class  Dune::PowerBasis< Backend, dimR >
     Meta-basis turning a scalar basis into vector-valued basis. More...
     
    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,24 +1,28 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+basis.hh File Reference\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:_\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:_\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:_\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/a04473_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04473_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: basis.hh Source File\n \n \n \n \n \n \n \n@@ -70,111 +70,124 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    rannacherturek/rannacherturek.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 (C) 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-
    11
    \n-\n-\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-
    28 template< class D, class R, unsigned int d >
    \n-
    \n-\n-
    30 {
    \n-\n-\n-\n-\n-
    36
    \n-
    \n-
    38 const typename Traits::LocalBasisType &localBasis () const
    \n-
    39 {
    \n-
    40 return localBasis_;
    \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+
    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-
    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:26
    \n-
    please doc me
    Definition rannachertureklocalinterpolation.hh:30
    \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,125 +1,144 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-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+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-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 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+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:_\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:26\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:30\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/a04476.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04476.html", "unified_diff": "@@ -65,39 +65,41 @@\n \n \n \n \n \n \n \n
    \n \n
    basis.hh File Reference
    \n
    \n
    \n-
    #include <numeric>
    \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 \n

    \n Classes

    class  Dune::PowerBasis< Backend, dimR >
     Meta-basis turning a scalar basis into vector-valued basis. More...
    class  Dune::EdgeS0_5Basis< Geometry, RF >
     Basis for order 0.5 (lowest order) edge elements on simplices. More...
     
    struct  Dune::PowerBasis< Backend, dimR >::Traits
     types of domain and range 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,28 +1,30 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 basis.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_\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_\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:_\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:_\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:_\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/a04476_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04476_source.html", "unified_diff": "@@ -70,124 +70,217 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    meta/power/basis.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 (C) 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+
    6#ifndef DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_BASIS_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_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-
    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+
    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+
    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 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+\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-
    101 };
    \n-
    \n-
    102
    \n-
    103} // namespace Dune
    \n
    104
    \n-
    105#endif // DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH
    \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-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+
    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:19
    \n+
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:26
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,144 +1,255 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+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\n-13#include \n-14#include \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+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+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+_\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 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-105#endif // DUNE_LOCALFUNCTIONS_META_POWER_BASIS_HH\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+_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\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 _\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+_\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-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+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 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+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 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+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-Dimension of the range values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/basis.hh:38\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:19\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:26\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: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/a04479.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04479.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: basis.hh File Reference\n+dune-localfunctions: coefficients.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-
    basis.hh File Reference
    \n+
    coefficients.hh File Reference
    \n
    \n
    \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+#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::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::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,30 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+coefficients.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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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_\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_\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/a04479_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04479_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: coefficients.hh Source File\n \n \n \n \n \n \n \n@@ -70,217 +70,75 @@\n
    \n \n \n \n \n \n \n
    \n-
    whitney/edges0.5/basis.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 (C) 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_COEFFICIENTS_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_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+\n+
    13
    \n+
    14namespace Dune {
    \n+
    15
    \n
    18
    \n-
    19namespace Dune {
    \n-
    20
    \n-
    22 //
    \n-
    23 // Basis
    \n-
    24 //
    \n-
    25
    \n+
    \n+\n+
    23 std::vector<LocalKey> keys;
    \n+
    24
    \n+
    25 public:
    \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 typedef FieldMatrix<RangeField, dimRange, dimDomainGlobal> Jacobian;
    \n-
    53 };
    \n+
    35 template<class Backend>
    \n+
    \n+
    36 PowerCoefficients(const Backend &backend, std::size_t power) :
    \n+
    37 keys(backend.size()*power)
    \n+
    38 {
    \n+
    39 for(std::size_t i = 0; i < backend.size(); ++i) {
    \n+
    40 const LocalKey &k = backend.localKey(i);
    \n+
    41 for(std::size_t d = 0; d < power; ++d)
    \n+
    42 keys[i+d*backend.size()] =
    \n+
    43 LocalKey(k.subEntity(), k.codim(), power*k.index() + d);
    \n+
    44 }
    \n+
    45 }
    \n+
    \n+
    47 inline std::size_t size() const { return keys.size(); }
    \n+
    48
    \n+
    50 inline const LocalKey& localKey(std::size_t i) const { return keys[i]; }
    \n+
    51 };
    \n
    \n+
    52
    \n+
    53} // namespace Dune
    \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-\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+
    55#endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n+\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:19
    \n-
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:26
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \n+
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n+
    unsigned int index() const
    Return offset within subentity.
    Definition localkey.hh:68
    \n+
    unsigned int codim() const
    Return codim of associated entity.
    Definition localkey.hh:62
    \n+
    unsigned int subEntity() const
    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:22
    \n+
    std::size_t size() const
    number of coefficients
    Definition meta/power/coefficients.hh:47
    \n+
    PowerCoefficients(const Backend &backend, std::size_t power)
    Construct a PowerCoefficients object.
    Definition meta/power/coefficients.hh:36
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition meta/power/coefficients.hh:50
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,255 +1,87 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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/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 (C) 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_COEFFICIENTS_HH\n+7#define DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_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+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 18\n-19namespace _\bD_\bu_\bn_\be {\n-20\n-22 //\n-23 // Basis\n-24 //\n-25\n+_\b2_\b2 class _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs {\n+23 std::vector keys;\n+24\n+25 public:\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+35 template\n+_\b3_\b6 _\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+37 keys(backend._\bs_\bi_\bz_\be()*power)\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-_\b5_\b2 typedef FieldMatrix _\bJ_\ba_\bc_\bo_\bb_\bi_\ba_\bn;\n-53 };\n+39 for(std::size_t i = 0; i < backend.size(); ++i) {\n+40 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &k = backend.localKey(i);\n+41 for(std::size_t d = 0; d < power; ++d)\n+42 keys[i+d*backend.size()] =\n+43 _\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+44 }\n+45 }\n+_\b4_\b7 inline std::size_t _\bs_\bi_\bz_\be() const { return keys.size(); }\n+48\n+_\b5_\b0 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+51 };\n+52\n+53} // namespace Dune\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 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-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\n-_\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bs_\bi_\bm_\bp_\bl_\be_\bx_\b._\bh_\bh\n+55#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:_\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+_\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:23\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+unsigned int index() const\n+Return offset within subentity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:68\n+_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n+unsigned int codim() const\n+Return codim of associated entity.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:62\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+unsigned int subEntity() const\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:22\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 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:19\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:26\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:34\n+number of coefficients\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn meta/power/coefficients.hh:47\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:36\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: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/a04482.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04482.html", "unified_diff": "@@ -65,34 +65,35 @@\n
    \n \n \n \n \n \n \n
    \n \n
    coefficients.hh File Reference
    \n
    \n
    \n
    #include <cstddef>
    \n #include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \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_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.9.0\n Loading...\n Searching...\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 #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_\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/a04482_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04482_source.html", "unified_diff": "@@ -70,75 +70,76 @@\n
    \n \n \n \n \n \n \n
    \n-
    meta/power/coefficients.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 (C) 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_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-
    13
    \n-
    14namespace Dune {
    \n-
    15
    \n-
    18
    \n-
    \n-\n-
    23 std::vector<LocalKey> keys;
    \n-
    24
    \n-
    25 public:
    \n-
    27
    \n-
    35 template<class Backend>
    \n-
    \n-
    36 PowerCoefficients(const Backend &backend, std::size_t power) :
    \n-
    37 keys(backend.size()*power)
    \n-
    38 {
    \n-
    39 for(std::size_t i = 0; i < backend.size(); ++i) {
    \n-
    40 const LocalKey &k = backend.localKey(i);
    \n-
    41 for(std::size_t d = 0; d < power; ++d)
    \n-
    42 keys[i+d*backend.size()] =
    \n-
    43 LocalKey(k.subEntity(), k.codim(), power*k.index() + d);
    \n-
    44 }
    \n-
    45 }
    \n+\n+\n+
    14
    \n+
    15namespace Dune {
    \n+
    16
    \n+
    18 //
    \n+
    19 // Coefficients
    \n+
    20 //
    \n+
    21
    \n+
    23
    \n+
    29 template<std::size_t dim>
    \n+
    \n+
    30 class EdgeS0_5Coefficients : private EdgeS0_5Common<dim> {
    \n+
    31 using EdgeS0_5Common<dim>::s;
    \n+
    32
    \n+
    33 std::vector<LocalKey> li;
    \n+
    34
    \n+
    35 public:
    \n+
    \n+\n+
    38 for(std::size_t i = 0; i < s; i++)
    \n+
    39 li[i] = LocalKey(i, dim-1, 0);
    \n+
    40 }
    \n+
    \n+
    41
    \n+
    43 std::size_t size () const { return s; }
    \n+
    44
    \n+
    46 const LocalKey& localKey(std::size_t i) const { return li[i]; }
    \n+
    47 };
    \n
    \n-
    47 inline std::size_t size() const { return keys.size(); }
    \n
    48
    \n-
    50 inline const LocalKey& localKey(std::size_t i) const { return keys[i]; }
    \n-
    51 };
    \n-
    \n-
    52
    \n-
    53} // namespace Dune
    \n-
    54
    \n-
    55#endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
    \n-\n+
    49} // namespace Dune
    \n+
    50
    \n+
    51#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n+\n+\n
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    unsigned int index() const
    Return offset within subentity.
    Definition localkey.hh:68
    \n-
    unsigned int codim() const
    Return codim of associated entity.
    Definition localkey.hh:62
    \n-
    unsigned int subEntity() const
    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:22
    \n-
    std::size_t size() const
    number of coefficients
    Definition meta/power/coefficients.hh:47
    \n-
    PowerCoefficients(const Backend &backend, std::size_t power)
    Construct a PowerCoefficients object.
    Definition meta/power/coefficients.hh:36
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition meta/power/coefficients.hh:50
    \n+
    Coefficients for lowest order edge elements on simplices.
    Definition whitney/edges0.5/coefficients.hh:30
    \n+
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition whitney/edges0.5/coefficients.hh:46
    \n+
    EdgeS0_5Coefficients()
    Standard constructor.
    Definition whitney/edges0.5/coefficients.hh:37
    \n+
    std::size_t size() const
    number of coefficients
    Definition whitney/edges0.5/coefficients.hh:43
    \n+
    Common base class for edge elements.
    Definition common.hh:19
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,87 +1,83 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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/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 (C) 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_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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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-18\n-_\b2_\b2 class _\bP_\bo_\bw_\be_\br_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs {\n-23 std::vector keys;\n-24\n-25 public:\n-27\n-35 template\n-_\b3_\b6 _\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-37 keys(backend._\bs_\bi_\bz_\be()*power)\n-38 {\n-39 for(std::size_t i = 0; i < backend.size(); ++i) {\n-40 const _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by &k = backend.localKey(i);\n-41 for(std::size_t d = 0; d < power; ++d)\n-42 keys[i+d*backend.size()] =\n-43 _\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-44 }\n-45 }\n-_\b4_\b7 inline std::size_t _\bs_\bi_\bz_\be() const { return keys.size(); }\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+29 template\n+_\b3_\b0 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+31 using _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs;\n+32\n+33 std::vector li;\n+34\n+35 public:\n+_\b3_\b7 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(_\bs) {\n+38 for(std::size_t i = 0; i < _\bs; i++)\n+39 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i, dim-1, 0);\n+40 }\n+41\n+_\b4_\b3 std::size_t _\bs_\bi_\bz_\be () const { return _\bs; }\n+44\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 { return li[i]; }\n+47 };\n 48\n-_\b5_\b0 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-51 };\n-52\n-53} // namespace Dune\n-54\n-55#endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH\n+49} // namespace Dune\n+50\n+51#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH\n+_\bc_\bo_\bm_\bm_\bo_\bn_\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_\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:23\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-unsigned int index() const\n-Return offset within subentity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:68\n-_\bD_\bu_\bn_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bK_\be_\by_\b:_\b:_\bc_\bo_\bd_\bi_\bm\n-unsigned int codim() const\n-Return codim of associated entity.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn localkey.hh:62\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-unsigned int subEntity() const\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:22\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:47\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:36\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+_\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:30\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 meta/power/coefficients.hh:50\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn whitney/edges0.5/coefficients.hh:46\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:37\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:43\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:19\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: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/a04485.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04485.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,35 +65,38 @@\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 <type_traits>
    \n+#include <utility>
    \n #include <vector>
    \n-#include <dune/localfunctions/common/localkey.hh>
    \n-#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n+#include <dune/common/typeutilities.hh>
    \n+#include <dune/localfunctions/common/localinterpolation.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 Classes

    class  Dune::EdgeS0_5Coefficients< dim >
     Coefficients for lowest order edge elements on simplices. More...
    class  Dune::LocalLagrangeInterpolation< LP, dim, F >
     
    struct  Dune::LagrangeInterpolationFactory< LP, dim, F >
     
    \n \n \n \n

    \n Namespaces

    namespace  Dune
     
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-coefficients.hh File Reference\n-#include \n+interpolation.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 <_\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 \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_\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_\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:_\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+ 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:_\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/a04485_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04485_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,76 +70,189 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    whitney/edges0.5/coefficients.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 (C) 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+
    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-\n-\n-
    14
    \n-
    15namespace Dune {
    \n+
    12#include <dune/common/typeutilities.hh>
    \n+
    13
    \n+\n+\n
    16
    \n-
    18 //
    \n-
    19 // Coefficients
    \n-
    20 //
    \n-
    21
    \n+
    17namespace Dune
    \n+
    18{
    \n+
    19
    \n+
    20 template< template <class,unsigned int> class LP,
    \n+
    21 unsigned int dim, class F >
    \n+
    22 struct LagrangeInterpolationFactory;
    \n
    23
    \n-
    29 template<std::size_t dim>
    \n-
    \n-
    30 class EdgeS0_5Coefficients : private EdgeS0_5Common<dim> {
    \n-
    31 using EdgeS0_5Common<dim>::s;
    \n-
    32
    \n-
    33 std::vector<LocalKey> li;
    \n-
    34
    \n-
    35 public:
    \n-
    \n-\n-
    38 for(std::size_t i = 0; i < s; i++)
    \n-
    39 li[i] = LocalKey(i, dim-1, 0);
    \n-
    40 }
    \n-
    \n+
    24 // LocalLagrangeInterpolation
    \n+
    25 // --------------------------
    \n+
    26
    \n+
    27 template< template <class,unsigned int> class LP, unsigned int dim, class F >
    \n+
    \n+\n+
    29 {
    \n+\n+
    31
    \n+
    32 public:
    \n+
    33 typedef LP<F,dim> LagrangePointSet;
    \n+
    34 typedef typename LagrangePointSet::Field Field;
    \n+
    35
    \n+
    36 static const unsigned int dimension = LagrangePointSet::dimension;
    \n+
    37
    \n+
    38 private:
    \n+
    39 friend struct LagrangeInterpolationFactory<LP,dim,F>;
    \n+
    40 const LagrangePointSet &lagrangePoints_;
    \n
    41
    \n-
    43 std::size_t size () const { return s; }
    \n-
    44
    \n-
    46 const LocalKey& localKey(std::size_t i) const { return li[i]; }
    \n-
    47 };
    \n-
    \n-
    48
    \n-
    49} // namespace Dune
    \n-
    50
    \n-
    51#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_COEFFICIENTS_HH
    \n-\n-\n+\n+
    43 : lagrangePoints_( lagrangePoints )
    \n+
    44 {}
    \n+
    45
    \n+
    46 const LagrangePointSet *points () const { return &lagrangePoints_; }
    \n+
    47
    \n+
    48 template< class Fn, class Vector >
    \n+
    49 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > ) const
    \n+
    50 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this->lagrangePoints_.begin()->point() ) > >
    \n+
    51 {
    \n+
    52 unsigned int index = 0;
    \n+
    53 for( const auto &lp : lagrangePoints_ )
    \n+
    54 field_cast( fn( lp.point() ), coefficients[ index++ ] );
    \n+
    55 }
    \n+
    56 template< class Fn, class Vector >
    \n+
    57 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 0 > ) const
    \n+
    58 -> std::enable_if_t< models<Impl::FunctionWithEvaluate< typename Fn::DomainType, typename Fn::RangeType >, Fn>(), void>
    \n+
    59 {
    \n+
    60 unsigned int index = 0;
    \n+
    61 for( const auto &lp : lagrangePoints_ )
    \n+
    62 {
    \n+
    63 typename Fn::RangeType val;
    \n+
    64 fn.evaluate( field_cast< typename Fn::DomainType::field_type >( lp.point() ), val );
    \n+
    65 field_cast( val, coefficients[ index++ ] );
    \n+
    66 }
    \n+
    67 }
    \n+
    68
    \n+
    69 public:
    \n+
    70 template< class Fn, class Vector >
    \n+
    \n+
    71 auto interpolate ( const Fn &fn, Vector &coefficients ) const
    \n+
    72 -> std::enable_if_t< std::is_same< decltype(std::declval<Vector>().resize(1) ),void >::value,void>
    \n+
    73 {
    \n+
    74 coefficients.resize( lagrangePoints_.size() );
    \n+
    75 interpolate( fn, coefficients, PriorityTag< 42 >() );
    \n+
    76 }
    \n+
    \n+
    77
    \n+
    78 template< class Basis, class Matrix >
    \n+
    \n+
    79 auto interpolate ( const Basis &basis, Matrix &coefficients ) const
    \n+
    80 -> std::enable_if_t< std::is_same<
    \n+
    81 decltype(std::declval<Matrix>().rowPtr(0)), typename Matrix::Field* >::value,void>
    \n+
    82 {
    \n+
    83 coefficients.resize( lagrangePoints_.size(), basis.size( ) );
    \n+
    84
    \n+
    85 unsigned int index = 0;
    \n+
    86 for( const auto &lp : lagrangePoints_ )
    \n+
    87 basis.template evaluate< 0 >( lp.point(), coefficients.rowPtr( index++ ) );
    \n+
    88 }
    \n+
    \n+
    89
    \n+
    90 const LagrangePointSet &lagrangePoints () const { return lagrangePoints_; }
    \n+
    91 };
    \n+
    \n+
    92
    \n+
    93
    \n+
    94
    \n+
    95 // LocalLagrangeInterpolationFactory
    \n+
    96 // ---------------------------------
    \n+
    97 template< template <class,unsigned int> class LP,
    \n+
    98 unsigned int dim, class F >
    \n+
    \n+\n+
    100 {
    \n+\n+\n+
    103
    \n+\n+\n+
    106
    \n+
    107 template< GeometryType::Id geometryId >
    \n+
    \n+
    108 static Object *create ( const Key &key )
    \n+
    109 {
    \n+
    110 const LagrangePointSet *lagrangeCoeff
    \n+
    111 = LagrangePointSetFactory::template create< geometryId >( key );
    \n+
    112 if ( lagrangeCoeff == 0 )
    \n+
    113 return 0;
    \n+
    114 else
    \n+
    115 return new Object( *lagrangeCoeff );
    \n+
    116 }
    \n+
    \n+
    117 template< GeometryType::Id geometryId >
    \n+
    \n+
    118 static bool supports ( const Key &key )
    \n+
    119 {
    \n+
    120 return true;
    \n+
    121 }
    \n+
    \n+
    \n+
    122 static void release( Object *object)
    \n+
    123 {
    \n+
    124 LagrangePointSetFactory::release( object->points() );
    \n+
    125 delete object;
    \n+
    126 }
    \n+
    \n+
    127 };
    \n+
    \n+
    128
    \n+
    129}
    \n+
    130
    \n+
    131#endif // #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n-
    Coefficients for lowest order edge elements on simplices.
    Definition whitney/edges0.5/coefficients.hh:30
    \n-
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition whitney/edges0.5/coefficients.hh:46
    \n-
    EdgeS0_5Coefficients()
    Standard constructor.
    Definition whitney/edges0.5/coefficients.hh:37
    \n-
    std::size_t size() const
    number of coefficients
    Definition whitney/edges0.5/coefficients.hh:43
    \n-
    Common base class for edge elements.
    Definition common.hh:19
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \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:100
    \n+
    LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory
    Definition lagrange/interpolation.hh:101
    \n+
    LagrangePointSetFactory::Object LagrangePointSet
    Definition lagrange/interpolation.hh:102
    \n+
    static bool supports(const Key &key)
    Definition lagrange/interpolation.hh:118
    \n+
    LagrangePointSetFactory::Key Key
    Definition lagrange/interpolation.hh:104
    \n+
    static Object * create(const Key &key)
    Definition lagrange/interpolation.hh:108
    \n+
    static void release(Object *object)
    Definition lagrange/interpolation.hh:122
    \n+
    const LocalLagrangeInterpolation< LP, dim, F > Object
    Definition lagrange/interpolation.hh:105
    \n+
    Definition lagrange/interpolation.hh:29
    \n+
    LagrangePointSet::Field Field
    Definition lagrange/interpolation.hh:34
    \n+
    const LagrangePointSet & lagrangePoints() const
    Definition lagrange/interpolation.hh:90
    \n+
    static const unsigned int dimension
    Definition lagrange/interpolation.hh:36
    \n+
    LP< F, dim > LagrangePointSet
    Definition lagrange/interpolation.hh:33
    \n+
    auto interpolate(const Fn &fn, Vector &coefficients) const -> std::enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void >::value, void >
    Definition lagrange/interpolation.hh:71
    \n+
    auto interpolate(const Basis &basis, Matrix &coefficients) const -> std::enable_if_t< std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::Field * >::value, void >
    Definition lagrange/interpolation.hh:79
    \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
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,83 +1,218 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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+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 <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\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+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_\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/_\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 16\n-18 //\n-19 // Coefficients\n-20 //\n-21\n+17namespace _\bD_\bu_\bn_\be\n+18{\n+19\n+20 template< template class LP,\n+21 unsigned int dim, class F >\n+22 struct LagrangeInterpolationFactory;\n 23\n-29 template\n-_\b3_\b0 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-31 using _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\bm_\bm_\bo_\bn_\b:_\b:_\bs;\n-32\n-33 std::vector li;\n-34\n-35 public:\n-_\b3_\b7 _\bE_\bd_\bg_\be_\bS_\b0_\b__\b5_\bC_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs() : li(_\bs) {\n-38 for(std::size_t i = 0; i < _\bs; i++)\n-39 li[i] = _\bL_\bo_\bc_\ba_\bl_\bK_\be_\by(i, dim-1, 0);\n-40 }\n+24 // LocalLagrangeInterpolation\n+25 // --------------------------\n+26\n+27 template< template class LP, unsigned int dim, class F\n+>\n+_\b2_\b8 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+29 {\n+30 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+31\n+32 public:\n+_\b3_\b3 typedef LP _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt;\n+_\b3_\b4 typedef typename LagrangePointSet::Field _\bF_\bi_\be_\bl_\bd;\n+35\n+_\b3_\b6 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = LagrangePointSet::dimension;\n+37\n+38 private:\n+39 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+40 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &lagrangePoints_;\n 41\n-_\b4_\b3 std::size_t _\bs_\bi_\bz_\be () const { return _\bs; }\n-44\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 { return li[i]; }\n-47 };\n-48\n-49} // namespace Dune\n-50\n-51#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+42 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+43 : lagrangePoints_( _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs )\n+44 {}\n+45\n+46 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *points () const { return &lagrangePoints_; }\n+47\n+48 template< class Fn, class Vector >\n+49 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > )\n+const\n+50 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this-\n+>lagrangePoints_.begin()->point() ) > >\n+51 {\n+52 unsigned int index = 0;\n+53 for( const auto &lp : lagrangePoints_ )\n+54 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( fn( lp.point() ), coefficients[ index++ ] );\n+55 }\n+56 template< class Fn, class Vector >\n+57 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 0 > )\n+const\n+58 -> std::enable_if_t< models, Fn>(), void>\n+59 {\n+60 unsigned int index = 0;\n+61 for( const auto &lp : lagrangePoints_ )\n+62 {\n+63 typename Fn::RangeType val;\n+64 fn.evaluate( field_cast< typename Fn::DomainType::field_type >( lp.point()\n+), val );\n+65 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( val, coefficients[ index++ ] );\n+66 }\n+67 }\n+68\n+69 public:\n+70 template< class Fn, class Vector >\n+_\b7_\b1 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Fn &fn, Vector &coefficients ) const\n+72 -> std::enable_if_t< std::is_same< decltype(std::declval().resize(1)\n+),void >::value,void>\n+73 {\n+74 coefficients.resize( lagrangePoints_.size() );\n+75 interpolate( fn, coefficients, PriorityTag< 42 >() );\n+76 }\n+77\n+78 template< class Basis, class Matrix >\n+_\b7_\b9 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &coefficients ) const\n+80 -> std::enable_if_t< std::is_same<\n+81 decltype(std::declval().rowPtr(0)), typename Matrix::Field* >::\n+value,void>\n+82 {\n+83 coefficients.resize( lagrangePoints_.size(), basis.size( ) );\n+84\n+85 unsigned int index = 0;\n+86 for( const auto &lp : lagrangePoints_ )\n+87 basis.template evaluate< 0 >( lp.point(), coefficients.rowPtr( index++ ) );\n+88 }\n+89\n+_\b9_\b0 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+91 };\n+92\n+93\n+94\n+95 // LocalLagrangeInterpolationFactory\n+96 // ---------------------------------\n+97 template< template class LP,\n+98 unsigned int dim, class F >\n+_\b9_\b9 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+100 {\n+_\b1_\b0_\b1 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+_\b1_\b0_\b2 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+103\n+_\b1_\b0_\b4 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+_\b1_\b0_\b5 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+106\n+107 template< GeometryType::Id geometryId >\n+_\b1_\b0_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n+109 {\n+110 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *lagrangeCoeff\n+111 = LagrangePointSetFactory::template create< geometryId >( key );\n+112 if ( lagrangeCoeff == 0 )\n+113 return 0;\n+114 else\n+115 return new _\bO_\bb_\bj_\be_\bc_\bt( *lagrangeCoeff );\n+116 }\n+117 template< GeometryType::Id geometryId >\n+_\b1_\b1_\b8 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n+119 {\n+120 return true;\n+121 }\n+_\b1_\b2_\b2 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object)\n+123 {\n+124 _\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+125 delete object;\n+126 }\n+127 };\n+128\n+129}\n+130\n+131#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:_\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:23\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:30\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:46\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:37\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:43\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:19\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:34\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:100\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:101\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:102\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:118\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:104\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:108\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:122\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:105\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:29\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:34\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:90\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:36\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: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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+auto interpolate(const Fn &fn, Vector &coefficients) const -> std::enable_if_t<\n+std::is_same< decltype(std::declval< Vector >().resize(1)), void >::value, void\n+>\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:71\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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+auto interpolate(const Basis &basis, Matrix &coefficients) const -> std::\n+enable_if_t< std::is_same< decltype(std::declval< Matrix >().rowPtr(0)),\n+typename Matrix::Field * >::value, void >\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:79\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+_\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/a04488.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04488.html", "unified_diff": "@@ -65,38 +65,36 @@\n \n \n \n \n \n \n \n
    \n \n
    interpolation.hh File Reference
    \n
    \n
    \n-
    #include <type_traits>
    \n-#include <utility>
    \n+
    #include <algorithm>
    \n+#include <cassert>
    \n+#include <cstddef>
    \n #include <vector>
    \n-#include <dune/common/typeutilities.hh>
    \n #include <dune/localfunctions/common/localinterpolation.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 Classes

    class  Dune::LocalLagrangeInterpolation< LP, dim, F >
     
    struct  Dune::LagrangeInterpolationFactory< LP, dim, F >
    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,26 +1,26 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+#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_\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_\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:_\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:_\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+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/a04488_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04488_source.html", "unified_diff": "@@ -70,188 +70,109 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    lagrange/interpolation.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 (C) 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-\n+
    5
    \n+
    6#ifndef DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n+
    8
    \n+
    9#include <algorithm>
    \n+
    10#include <cassert>
    \n+
    11#include <cstddef>
    \n+
    12#include <vector>
    \n+\n+
    14
    \n+
    15namespace Dune {
    \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-
    22 struct LagrangeInterpolationFactory;
    \n-
    23
    \n-
    24 // LocalLagrangeInterpolation
    \n-
    25 // --------------------------
    \n-
    26
    \n-
    27 template< template <class,unsigned int> class LP, unsigned int dim, class F >
    \n-
    \n-\n-
    29 {
    \n-\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-
    33 typedef LP<F,dim> LagrangePointSet;
    \n-
    34 typedef typename LagrangePointSet::Field Field;
    \n+
    34 typedef BasisTraits Traits;
    \n
    35
    \n-
    36 static const unsigned int dimension = LagrangePointSet::dimension;
    \n
    37
    \n-
    38 private:
    \n-
    39 friend struct LagrangeInterpolationFactory<LP,dim,F>;
    \n-
    40 const LagrangePointSet &lagrangePoints_;
    \n-
    41
    \n-\n-
    43 : lagrangePoints_( lagrangePoints )
    \n-
    44 {}
    \n-
    45
    \n-
    46 const LagrangePointSet *points () const { return &lagrangePoints_; }
    \n-
    47
    \n-
    48 template< class Fn, class Vector >
    \n-
    49 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > ) const
    \n-
    50 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this->lagrangePoints_.begin()->point() ) > >
    \n-
    51 {
    \n-
    52 unsigned int index = 0;
    \n-
    53 for( const auto &lp : lagrangePoints_ )
    \n-
    54 field_cast( fn( lp.point() ), coefficients[ index++ ] );
    \n-
    55 }
    \n-
    56 template< class Fn, class Vector >
    \n-
    57 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 0 > ) const
    \n-
    58 -> std::enable_if_t< models<Impl::FunctionWithEvaluate< typename Fn::DomainType, typename Fn::RangeType >, Fn>(), void>
    \n-
    59 {
    \n-
    60 unsigned int index = 0;
    \n-
    61 for( const auto &lp : lagrangePoints_ )
    \n-
    62 {
    \n-
    63 typename Fn::RangeType val;
    \n-
    64 fn.evaluate( field_cast< typename Fn::DomainType::field_type >( lp.point() ), val );
    \n-
    65 field_cast( val, coefficients[ index++ ] );
    \n-
    66 }
    \n-
    67 }
    \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 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+
    66 public:
    \n
    68
    \n-
    69 public:
    \n-
    70 template< class Fn, class Vector >
    \n-
    \n-
    71 auto interpolate ( const Fn &fn, Vector &coefficients ) const
    \n-
    72 -> std::enable_if_t< std::is_same< decltype(std::declval<Vector>().resize(1) ),void >::value,void>
    \n-
    73 {
    \n-
    74 coefficients.resize( lagrangePoints_.size() );
    \n-
    75 interpolate( fn, coefficients, PriorityTag< 42 >() );
    \n-
    76 }
    \n-
    \n-
    77
    \n-
    78 template< class Basis, class Matrix >
    \n-
    \n-
    79 auto interpolate ( const Basis &basis, Matrix &coefficients ) const
    \n-
    80 -> std::enable_if_t< std::is_same<
    \n-
    81 decltype(std::declval<Matrix>().rowPtr(0)), typename Matrix::Field* >::value,void>
    \n-
    82 {
    \n-
    83 coefficients.resize( lagrangePoints_.size(), basis.size( ) );
    \n-
    84
    \n-
    85 unsigned int index = 0;
    \n-
    86 for( const auto &lp : lagrangePoints_ )
    \n-
    87 basis.template evaluate< 0 >( lp.point(), coefficients.rowPtr( index++ ) );
    \n-
    88 }
    \n-
    \n-
    89
    \n-
    90 const LagrangePointSet &lagrangePoints () const { return lagrangePoints_; }
    \n-
    91 };
    \n-
    \n-
    92
    \n-
    93
    \n-
    94
    \n-
    95 // LocalLagrangeInterpolationFactory
    \n-
    96 // ---------------------------------
    \n-
    97 template< template <class,unsigned int> class LP,
    \n-
    98 unsigned int dim, class F >
    \n-
    \n-\n-
    100 {
    \n-\n-\n-
    103
    \n-\n-\n-
    106
    \n-
    107 template< GeometryType::Id geometryId >
    \n-
    \n-
    108 static Object *create ( const Key &key )
    \n-
    109 {
    \n-
    110 const LagrangePointSet *lagrangeCoeff
    \n-
    111 = LagrangePointSetFactory::template create< geometryId >( key );
    \n-
    112 if ( lagrangeCoeff == 0 )
    \n-
    113 return 0;
    \n-
    114 else
    \n-
    115 return new Object( *lagrangeCoeff );
    \n-
    116 }
    \n-
    \n-
    117 template< GeometryType::Id geometryId >
    \n-
    \n-
    118 static bool supports ( const Key &key )
    \n-
    119 {
    \n-
    120 return true;
    \n-
    121 }
    \n-
    \n-
    \n-
    122 static void release( Object *object)
    \n-
    123 {
    \n-
    124 LagrangePointSetFactory::release( object->points() );
    \n-
    125 delete object;
    \n-
    126 }
    \n-
    \n-
    127 };
    \n-
    \n-
    128
    \n-
    129}
    \n-
    130
    \n-
    131#endif // #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH
    \n-\n+
    77 template<typename F, typename C>
    \n+
    \n+
    78 void interpolate(const F& ff, std::vector<C>& out) const {
    \n+
    79
    \n+
    80 auto&& f = Impl::makeFunctionWithCallOperator<typename Backend::Traits::DomainLocal>(ff);
    \n+
    81
    \n+
    82
    \n+
    83 out.clear();
    \n+
    84 std::vector<C> cout;
    \n+
    85 for(std::size_t d = 0; d < Traits::dimRange; ++d) {
    \n+
    86 // When dropping support for `evaluate()` we can simply use a lambda
    \n+
    87 // instead of ComponentEvaluator. But changing this now would break
    \n+
    88 // PowerInterpolation for FE-implementation outside of dune-localfunctions
    \n+
    89 // which may not have been adjusted so far.
    \n+
    90 backend->interpolate(ComponentEvaluator<std::decay_t<decltype(f)>>(f, d), cout);
    \n+
    91 if(d == 0)
    \n+
    92 out.resize(cout.size()*Traits::dimRange);
    \n+
    93 // make sure the size of cout does not change surprisingly
    \n+
    94 assert(out.size() == cout.size()*Traits::dimRange);
    \n+
    95 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());
    \n+
    96 }
    \n+
    97 }
    \n+
    \n+
    98 };
    \n+
    \n+
    99
    \n+
    100} // namespace Dune
    \n+
    101
    \n+
    102#endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_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:100
    \n-
    LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory
    Definition lagrange/interpolation.hh:101
    \n-
    LagrangePointSetFactory::Object LagrangePointSet
    Definition lagrange/interpolation.hh:102
    \n-
    static bool supports(const Key &key)
    Definition lagrange/interpolation.hh:118
    \n-
    LagrangePointSetFactory::Key Key
    Definition lagrange/interpolation.hh:104
    \n-
    static Object * create(const Key &key)
    Definition lagrange/interpolation.hh:108
    \n-
    static void release(Object *object)
    Definition lagrange/interpolation.hh:122
    \n-
    const LocalLagrangeInterpolation< LP, dim, F > Object
    Definition lagrange/interpolation.hh:105
    \n-
    Definition lagrange/interpolation.hh:29
    \n-
    LagrangePointSet::Field Field
    Definition lagrange/interpolation.hh:34
    \n-
    const LagrangePointSet & lagrangePoints() const
    Definition lagrange/interpolation.hh:90
    \n-
    static const unsigned int dimension
    Definition lagrange/interpolation.hh:36
    \n-
    LP< F, dim > LagrangePointSet
    Definition lagrange/interpolation.hh:33
    \n-
    auto interpolate(const Fn &fn, Vector &coefficients) const -> std::enable_if_t< std::is_same< decltype(std::declval< Vector >().resize(1)), void >::value, void >
    Definition lagrange/interpolation.hh:71
    \n-
    auto interpolate(const Basis &basis, Matrix &coefficients) const -> std::enable_if_t< std::is_same< decltype(std::declval< Matrix >().rowPtr(0)), typename Matrix::Field * >::value, void >
    Definition lagrange/interpolation.hh:79
    \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-interpolation turning a scalar interpolation into vector-valued interpolation.
    Definition meta/power/interpolation.hh:26
    \n+
    void interpolate(const F &ff, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition meta/power/interpolation.hh:78
    \n+
    BasisTraits Traits
    Export basis traits.
    Definition meta/power/interpolation.hh:34
    \n+
    PowerInterpolation(const Backend &backend_)
    Construct a PowerInterpolation.
    Definition meta/power/interpolation.hh:43
    \n \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,218 +1,114 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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/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 (C) 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/_\bc_\bo_\bm_\bm_\bo_\bn_\b/_\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/_\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_INTERPOLATION_HH\n+7#define DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n+8\n+9#include \n+10#include \n+11#include \n+12#include \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_\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-17namespace _\bD_\bu_\bn_\be\n-18{\n 19\n-20 template< template class LP,\n-21 unsigned int dim, class F >\n-22 struct LagrangeInterpolationFactory;\n-23\n-24 // LocalLagrangeInterpolation\n-25 // --------------------------\n-26\n-27 template< template class LP, unsigned int dim, class F\n->\n-_\b2_\b8 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-29 {\n-30 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+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_\b3 typedef LP _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt;\n-_\b3_\b4 typedef typename LagrangePointSet::Field _\bF_\bi_\be_\bl_\bd;\n+_\b3_\b4 typedef BasisTraits _\bT_\br_\ba_\bi_\bt_\bs;\n 35\n-_\b3_\b6 static const unsigned int _\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn = LagrangePointSet::dimension;\n 37\n-38 private:\n-39 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-40 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt &lagrangePoints_;\n-41\n-42 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-43 : lagrangePoints_( _\bl_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bs )\n-44 {}\n-45\n-46 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *points () const { return &lagrangePoints_; }\n-47\n-48 template< class Fn, class Vector >\n-49 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 1 > )\n-const\n-50 -> std::enable_if_t< std::is_invocable_v< const Fn &, decltype( this-\n->lagrangePoints_.begin()->point() ) > >\n-51 {\n-52 unsigned int index = 0;\n-53 for( const auto &lp : lagrangePoints_ )\n-54 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( fn( lp.point() ), coefficients[ index++ ] );\n-55 }\n-56 template< class Fn, class Vector >\n-57 auto interpolate ( const Fn &fn, Vector &coefficients, PriorityTag< 0 > )\n-const\n-58 -> std::enable_if_t< models, Fn>(), void>\n-59 {\n-60 unsigned int index = 0;\n-61 for( const auto &lp : lagrangePoints_ )\n-62 {\n-63 typename Fn::RangeType val;\n-64 fn.evaluate( field_cast< typename Fn::DomainType::field_type >( lp.point()\n-), val );\n-65 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt( val, coefficients[ index++ ] );\n-66 }\n-67 }\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+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 public:\n 68\n-69 public:\n-70 template< class Fn, class Vector >\n-_\b7_\b1 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Fn &fn, Vector &coefficients ) const\n-72 -> std::enable_if_t< std::is_same< decltype(std::declval().resize(1)\n-),void >::value,void>\n-73 {\n-74 coefficients.resize( lagrangePoints_.size() );\n-75 interpolate( fn, coefficients, PriorityTag< 42 >() );\n-76 }\n-77\n-78 template< class Basis, class Matrix >\n-_\b7_\b9 auto _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be ( const Basis &basis, Matrix &coefficients ) const\n-80 -> std::enable_if_t< std::is_same<\n-81 decltype(std::declval().rowPtr(0)), typename Matrix::Field* >::\n-value,void>\n-82 {\n-83 coefficients.resize( lagrangePoints_.size(), basis.size( ) );\n-84\n-85 unsigned int index = 0;\n-86 for( const auto &lp : lagrangePoints_ )\n-87 basis.template evaluate< 0 >( lp.point(), coefficients.rowPtr( index++ ) );\n-88 }\n-89\n-_\b9_\b0 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-91 };\n-92\n-93\n-94\n-95 // LocalLagrangeInterpolationFactory\n-96 // ---------------------------------\n-97 template< template class LP,\n-98 unsigned int dim, class F >\n-_\b9_\b9 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-100 {\n-_\b1_\b0_\b1 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-_\b1_\b0_\b2 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-103\n-_\b1_\b0_\b4 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-_\b1_\b0_\b5 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-106\n-107 template< GeometryType::Id geometryId >\n-_\b1_\b0_\b8 static _\bO_\bb_\bj_\be_\bc_\bt *_\bc_\br_\be_\ba_\bt_\be ( const _\bK_\be_\by &key )\n-109 {\n-110 const _\bL_\ba_\bg_\br_\ba_\bn_\bg_\be_\bP_\bo_\bi_\bn_\bt_\bS_\be_\bt *lagrangeCoeff\n-111 = LagrangePointSetFactory::template create< geometryId >( key );\n-112 if ( lagrangeCoeff == 0 )\n-113 return 0;\n-114 else\n-115 return new _\bO_\bb_\bj_\be_\bc_\bt( *lagrangeCoeff );\n-116 }\n-117 template< GeometryType::Id geometryId >\n-_\b1_\b1_\b8 static bool _\bs_\bu_\bp_\bp_\bo_\br_\bt_\bs ( const _\bK_\be_\by &key )\n-119 {\n-120 return true;\n-121 }\n-_\b1_\b2_\b2 static void _\br_\be_\bl_\be_\ba_\bs_\be( _\bO_\bb_\bj_\be_\bc_\bt *object)\n-123 {\n-124 _\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-125 delete object;\n-126 }\n-127 };\n-128\n-129}\n-130\n-131#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+77 template\n+_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& ff, std::vector& out) const {\n+79\n+80 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+81\n+82\n+83 out.clear();\n+84 std::vector cout;\n+85 for(std::size_t d = 0; d < Traits::dimRange; ++d) {\n+86 // When dropping support for `evaluate()` we can simply use a lambda\n+87 // instead of ComponentEvaluator. But changing this now would break\n+88 // PowerInterpolation for FE-implementation outside of dune-localfunctions\n+89 // which may not have been adjusted so far.\n+90 backend->interpolate(ComponentEvaluator>(f, d),\n+cout);\n+91 if(d == 0)\n+92 out.resize(cout.size()*Traits::dimRange);\n+93 // make sure the size of cout does not change surprisingly\n+94 assert(out.size() == cout.size()*Traits::dimRange);\n+95 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());\n+96 }\n+97 }\n+98 };\n+99\n+100} // namespace Dune\n+101\n+102#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:_\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:100\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:101\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:102\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:118\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:104\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:108\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:122\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:105\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:29\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:34\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:90\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:36\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: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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-auto interpolate(const Fn &fn, Vector &coefficients) const -> std::enable_if_t<\n-std::is_same< decltype(std::declval< Vector >().resize(1)), void >::value, void\n->\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:71\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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-auto interpolate(const Basis &basis, Matrix &coefficients) const -> std::\n-enable_if_t< std::is_same< decltype(std::declval< Matrix >().rowPtr(0)),\n-typename Matrix::Field * >::value, void >\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn lagrange/interpolation.hh:79\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_\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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void interpolate(const F &ff, 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:_\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:_\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 _\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/a04491.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04491.html", "unified_diff": "@@ -65,36 +65,35 @@\n \n \n \n \n \n \n \n
    \n \n
    interpolation.hh File Reference
    \n
    \n
    \n-
    #include <algorithm>
    \n-#include <cassert>
    \n-#include <cstddef>
    \n+
    #include <cstddef>
    \n #include <vector>
    \n+#include <dune/localfunctions/whitney/edges0.5/common.hh>
    \n #include <dune/localfunctions/common/localinterpolation.hh>
    \n
    \n

    Go to the source code of this file.

    \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_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,26 +1,24 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 #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_\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_\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_\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/a04491_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04491_source.html", "unified_diff": "@@ -70,109 +70,114 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    meta/power/interpolation.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 (C) 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_INTERPOLATION_HH
    \n+
    7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n
    8
    \n-
    9#include <algorithm>
    \n-
    10#include <cassert>
    \n-
    11#include <cstddef>
    \n-
    12#include <vector>
    \n+
    9#include <cstddef>
    \n+
    10#include <vector>
    \n+
    11
    \n+\n \n
    14
    \n
    15namespace Dune {
    \n
    16
    \n-
    19
    \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+
    18 //
    \n+
    19 // Interpolation
    \n+
    20 //
    \n+
    21
    \n+
    23
    \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 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 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+
    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 public:
    \n-
    68
    \n-
    77 template<typename F, typename C>
    \n-
    \n-
    78 void interpolate(const F& ff, std::vector<C>& out) const {
    \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& ff, std::vector<C>& out) const {
    \n+
    76 typename Traits::Range y;
    \n+
    77
    \n+
    78 auto&& f = Impl::makeFunctionWithCallOperator<std::decay_t<decltype(refelem.position(0,dim-1))>>(ff);
    \n
    79
    \n-
    80 auto&& f = Impl::makeFunctionWithCallOperator<typename Backend::Traits::DomainLocal>(ff);
    \n+
    80 out.resize(s);
    \n
    81
    \n-
    82
    \n-
    83 out.clear();
    \n-
    84 std::vector<C> cout;
    \n-
    85 for(std::size_t d = 0; d < Traits::dimRange; ++d) {
    \n-
    86 // When dropping support for `evaluate()` we can simply use a lambda
    \n-
    87 // instead of ComponentEvaluator. But changing this now would break
    \n-
    88 // PowerInterpolation for FE-implementation outside of dune-localfunctions
    \n-
    89 // which may not have been adjusted so far.
    \n-
    90 backend->interpolate(ComponentEvaluator<std::decay_t<decltype(f)>>(f, d), cout);
    \n-
    91 if(d == 0)
    \n-
    92 out.resize(cout.size()*Traits::dimRange);
    \n-
    93 // make sure the size of cout does not change surprisingly
    \n-
    94 assert(out.size() == cout.size()*Traits::dimRange);
    \n-
    95 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());
    \n-
    96 }
    \n-
    97 }
    \n-
    \n-
    98 };
    \n-
    \n-
    99
    \n-
    100} // namespace Dune
    \n-
    101
    \n-
    102#endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH
    \n+
    82 for(std::size_t i = 0; i < s; ++i) {
    \n+
    83 y = f(refelem.position(i,dim-1));
    \n+
    84
    \n+
    85 out[i] = y * edgev[i];
    \n+
    86 }
    \n+
    87 }
    \n+
    \n+
    88 };
    \n+
    \n+
    89
    \n+
    90} // namespace Dune
    \n+
    91
    \n+
    92#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n+\n
    Definition bdfmcube.hh:18
    \n-
    Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
    Definition meta/power/interpolation.hh:26
    \n-
    void interpolate(const F &ff, std::vector< C > &out) const
    Determine coefficients interpolating a given function.
    Definition meta/power/interpolation.hh:78
    \n-
    BasisTraits Traits
    Export basis traits.
    Definition meta/power/interpolation.hh:34
    \n-
    PowerInterpolation(const Backend &backend_)
    Construct a PowerInterpolation.
    Definition meta/power/interpolation.hh:43
    \n+
    Common base class for edge elements.
    Definition common.hh:19
    \n+
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:26
    \n+
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \n+
    Interpolation for lowest order edge elements on simplices.
    Definition whitney/edges0.5/interpolation.hh:33
    \n+
    void interpolate(const F &ff, 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
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,114 +1,121 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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/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 (C) 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_INTERPOLATION_HH\n+7#define DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n 8\n-9#include \n-10#include \n-11#include \n-12#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/_\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#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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-19\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+18 //\n+19 // Interpolation\n+20 //\n+21\n+23\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 private:\n-46 template\n-47 class ComponentEvaluator\n-48 {\n-49 const F &f;\n-50 std::size_t comp;\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+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 public:\n-68\n-77 template\n-_\b7_\b8 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& ff, std::vector& out) const {\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& ff, std::vector& out) const {\n+76 typename Traits::Range y;\n+77\n+78 auto&& f = Impl::makeFunctionWithCallOperator>(ff);\n 79\n-80 auto&& f = Impl::makeFunctionWithCallOperator(ff);\n+80 out.resize(s);\n 81\n-82\n-83 out.clear();\n-84 std::vector cout;\n-85 for(std::size_t d = 0; d < Traits::dimRange; ++d) {\n-86 // When dropping support for `evaluate()` we can simply use a lambda\n-87 // instead of ComponentEvaluator. But changing this now would break\n-88 // PowerInterpolation for FE-implementation outside of dune-localfunctions\n-89 // which may not have been adjusted so far.\n-90 backend->interpolate(ComponentEvaluator>(f, d),\n-cout);\n-91 if(d == 0)\n-92 out.resize(cout.size()*Traits::dimRange);\n-93 // make sure the size of cout does not change surprisingly\n-94 assert(out.size() == cout.size()*Traits::dimRange);\n-95 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());\n-96 }\n-97 }\n-98 };\n-99\n-100} // namespace Dune\n-101\n-102#endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH\n+82 for(std::size_t i = 0; i < s; ++i) {\n+83 y = f(refelem.position(i,dim-1));\n+84\n+85 out[i] = y * edgev[i];\n+86 }\n+87 }\n+88 };\n+89\n+90} // namespace Dune\n+91\n+92#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:_\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:_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\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:19\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:26\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:34\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 &ff, 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:_\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:_\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+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 _\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/a04494.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04494.html", "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: interpolation.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-
    interpolation.hh File Reference
    \n+
    rannacherturek.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/localinterpolation.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...
    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.9.0\n Loading...\n Searching...\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-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/_\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_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\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_\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+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/a04494_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04494_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: rannacherturek.hh Source File\n \n \n \n \n \n \n \n@@ -70,115 +70,111 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    whitney/edges0.5/interpolation.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 (C) 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-
    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 // Interpolation
    \n-
    20 //
    \n-
    21
    \n-
    23
    \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+\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-
    37 private:
    \n-
    38 static const std::size_t dim = Traits::dimDomainLocal;
    \n-\n-
    40 using Base::refelem;
    \n-
    41 using Base::s;
    \n+
    \n+
    38 const typename Traits::LocalBasisType &localBasis () const
    \n+
    39 {
    \n+
    40 return localBasis_;
    \n+
    41 }
    \n+
    \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+\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-
    74 template<typename F, typename C>
    \n-
    \n-
    75 void interpolate(const F& ff, std::vector<C>& out) const {
    \n-
    76 typename Traits::Range y;
    \n-
    77
    \n-
    78 auto&& f = Impl::makeFunctionWithCallOperator<std::decay_t<decltype(refelem.position(0,dim-1))>>(ff);
    \n-
    79
    \n-
    80 out.resize(s);
    \n-
    81
    \n-
    82 for(std::size_t i = 0; i < s; ++i) {
    \n-
    83 y = f(refelem.position(i,dim-1));
    \n-
    84
    \n-
    85 out[i] = y * edgev[i];
    \n-
    86 }
    \n-
    87 }
    \n-
    \n-
    88 };
    \n-
    \n-
    89
    \n-
    90} // namespace Dune
    \n-
    91
    \n-
    92#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH
    \n-\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-
    Common base class for edge elements.
    Definition common.hh:19
    \n-
    RefElem refelem
    The reference element for this edge element.
    Definition common.hh:26
    \n-
    std::size_t s
    The number of base functions.
    Definition common.hh:34
    \n-
    Interpolation for lowest order edge elements on simplices.
    Definition whitney/edges0.5/interpolation.hh:33
    \n-
    void interpolate(const F &ff, 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+
    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:26
    \n+
    please doc me
    Definition rannachertureklocalinterpolation.hh:30
    \n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,121 +1,125 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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-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/_\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#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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-18 //\n-19 // Interpolation\n-20 //\n-21\n-23\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+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-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+_\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-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+_\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 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+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-74 template\n-_\b7_\b5 void _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(const F& ff, std::vector& out) const {\n-76 typename Traits::Range y;\n-77\n-78 auto&& f = Impl::makeFunctionWithCallOperator>(ff);\n-79\n-80 out.resize(s);\n-81\n-82 for(std::size_t i = 0; i < s; ++i) {\n-83 y = f(refelem.position(i,dim-1));\n-84\n-85 out[i] = y * edgev[i];\n-86 }\n-87 }\n-88 };\n-89\n-90} // namespace Dune\n-91\n-92#endif // DUNE_LOCALFUNCTIONS_WHITNEY_EDGES0_5_INTERPOLATION_HH\n-_\bc_\bo_\bm_\bm_\bo_\bn_\b._\bh_\bh\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_\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+_\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+_\bl_\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:_\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:19\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:26\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:34\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 &ff, 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-_\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_\b:_\b:_\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:26\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:30\n ===============================================================================\n Generated by\u00a0_\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b] 1.9.8\n"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04497.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04497.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/a04497_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04497_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:199
    \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -160,17 +160,17 @@\n &key )\n 183 : _\bB_\ba_\bs_\be( gt, key )\n 184 {}\n 185 };\n 186}\n 187\n 188#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_\bg_\bl_\bo_\bc_\ba_\bl_\bc_\bo_\be_\bf_\bf_\bi_\bc_\bi_\be_\bn_\bt_\bs_\b._\bh_\bh\n _\bl_\b2_\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_\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"}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04500.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04500.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/a04500_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a04500_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@@ -156,16 +156,16 @@\n
    70
    \n
    71
    \n
    72} /* namespace Python */
    \n
    \n
    73} /* namespace Dune */
    \n
    74
    \n
    75#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:23
    \n
    unsigned int index() const
    Return offset within subentity.
    Definition localkey.hh:68
    \n
    unsigned int codim() const
    Return codim of associated entity.
    Definition localkey.hh:62
    \n
    unsigned int subEntity() const
    Return number of associated subentity.
    Definition localkey.hh:56
    \n \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 / localcoefficients.hhlocalkey.hh
    cube / brezzidouglasfortinmarini/cube/localinterpolation.hhcommon/localinterpolation.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 / localcoefficients.hhlocalkey.hh
    cube / brezzidouglasfortinmarini/cube/localinterpolation.hhcommon/localinterpolation.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/localinterpolation.hh
    bdfmcube.hhlocalcoefficients.hh
    \n+

    brezzidouglasfortinmarini → cube Relation

    File in dune/localfunctions/brezzidouglasfortinmariniIncludes file in dune/localfunctions/brezzidouglasfortinmarini/cube
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localbasis.hh
    bdfmcube.hhbrezzidouglasfortinmarini/cube/localinterpolation.hh
    bdfmcube.hhlocalcoefficients.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
    brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    \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
    brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube3d / brezzidouglasmarini1cube3dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalinterpolation.hhcommon/localinterpolation.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
    brezzidouglasmarini1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    brezzidouglasmarini1cube2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1cube2dlocalinterpolation.hhcommon/localinterpolation.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
    brezzidouglasmarini1simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    brezzidouglasmarini1simplex2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini1simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini1simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini1simplex2dlocalinterpolation.hhcommon/localinterpolation.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
    brezzidouglasmarini2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    brezzidouglasmarini2cube2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2cube2dlocalinterpolation.hhcommon/localinterpolation.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
    brezzidouglasmarini2simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    brezzidouglasmarini2simplex2d → common Relation

    File in dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2dIncludes file in dune/localfunctions/common
    brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini2simplex2dlocalinterpolation.hhcommon/localinterpolation.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/localinterpolation.hhcommon/localinterpolation.hh
    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/localinterpolation.hhcommon/localinterpolation.hh
    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
    dualp1 / dualp1localinterpolation.hhcommon/localinterpolation.hh
    dualq1 / dualq1localbasis.hhcommon/localbasis.hh
    dualq1 / dualq1localcoefficients.hhlocalkey.hh
    dualq1 / dualq1localinterpolation.hhcommon/localinterpolation.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_000021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000012_000021.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
    dualp1localinterpolation.hhcommon/localinterpolation.hh
    \n+

    dualp1 → common Relation

    File in dune/localfunctions/dualmortarbasis/dualp1Includes file in dune/localfunctions/common
    dualp1localbasis.hhcommon/localbasis.hh
    dualp1localcoefficients.hhlocalkey.hh
    dualp1localinterpolation.hhcommon/localinterpolation.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
    dualq1localinterpolation.hhcommon/localinterpolation.hh
    \n+

    dualq1 → common Relation

    File in dune/localfunctions/dualmortarbasis/dualq1Includes file in dune/localfunctions/common
    dualq1localbasis.hhcommon/localbasis.hh
    dualq1localcoefficients.hhlocalkey.hh
    dualq1localinterpolation.hhcommon/localinterpolation.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
    whitney/edges0.5/interpolation.hhcommon/localinterpolation.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
    whitney/edges0.5/interpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000016_000021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000016_000021.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+

    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
    hierarchicalp2 / hierarchicalsimplexp2localinterpolation.hhcommon/localinterpolation.hh
    hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localinterpolation.hh
    hierarchicalprismp2 / hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    hierarchicalprismp2 / hierarchicalprismp2localinterpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000018.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000018.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_000017_000019.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000019.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_000017_000020.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000020.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_000017_000021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000017_000021.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_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-

    hierarchicalp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2Includes file in dune/localfunctions/common
    hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    hierarchicalsimplexp2localinterpolation.hhcommon/localinterpolation.hh
    \n+

    hierarchicalp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2Includes file in dune/localfunctions/common
    hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    hierarchicalsimplexp2localinterpolation.hhcommon/localinterpolation.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-

    hierarchicalp2withelementbubble → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2withelementbubbleIncludes file in dune/localfunctions/common
    hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchicalsimplexp2withelementbubble.hhcommon/localinterpolation.hh
    hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    \n+

    hierarchicalp2withelementbubble → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalp2withelementbubbleIncludes file in dune/localfunctions/common
    hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchicalsimplexp2withelementbubble.hhcommon/localinterpolation.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_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-

    hierarchicalprismp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalprismp2Includes file in dune/localfunctions/common
    hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    hierarchicalprismp2localinterpolation.hhcommon/localinterpolation.hh
    \n+

    hierarchicalprismp2 → common Relation

    File in dune/localfunctions/hierarchical/hierarchicalprismp2Includes file in dune/localfunctions/common
    hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    hierarchicalprismp2localinterpolation.hhcommon/localinterpolation.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+

    lagrange → common Relation

    File in dune/localfunctions/lagrangeIncludes file in dune/localfunctions/common
    emptypoints.hhlocalkey.hh
    lagrange/interpolation.hhcommon/localinterpolation.hh
    lagrangecoefficients.hhlocalkey.hh
    lagrangecube.hhcommon/localbasis.hh
    lagrangecube.hhcommon/localinterpolation.hh
    lagrangecube.hhlocalfiniteelementtraits.hh
    lagrangecube.hhlocalkey.hh
    lagrangelfecache.hhlocalfiniteelementvariantcache.hh
    lagrangeprism.hhcommon/localbasis.hh
    lagrangeprism.hhcommon/localinterpolation.hh
    lagrangeprism.hhlocalfiniteelementtraits.hh
    lagrangeprism.hhlocalkey.hh
    lagrangepyramid.hhcommon/localbasis.hh
    lagrangepyramid.hhcommon/localinterpolation.hh
    lagrangepyramid.hhlocalfiniteelementtraits.hh
    lagrangepyramid.hhlocalkey.hh
    lagrangesimplex.hhcommon/localbasis.hh
    lagrangesimplex.hhcommon/localinterpolation.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
    p0 / p0localinterpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000021_000030.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000021_000030.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_000021_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000021_000053.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_000022_000001.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_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_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-

    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/localinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalinterpolation.hhcommon/localinterpolation.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 / brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    crouzeixraviart.hhcommon/localbasis.hh
    crouzeixraviart.hhcommon/localinterpolation.hh
    crouzeixraviart.hhlocalfiniteelementtraits.hh
    crouzeixraviart.hhlocalkey.hh
    dualmortarbasis / dualp1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualp1 / dualp1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualp1 / dualp1localcoefficients.hhlocalkey.hh
    dualmortarbasis / dualp1 / dualp1localinterpolation.hhcommon/localinterpolation.hh
    dualmortarbasis / dualpq1factory.hhvirtualinterface.hh
    dualmortarbasis / dualpq1factory.hhvirtualwrappers.hh
    dualmortarbasis / dualq1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualq1 / dualq1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualq1 / dualq1localcoefficients.hhlocalkey.hh
    dualmortarbasis / dualq1 / dualq1localinterpolation.hhcommon/localinterpolation.hh
    lagrange / emptypoints.hhlocalkey.hh
    hierarchical / hierarchicalp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalp2withelementbubble.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2 / hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalprismp2 / hierarchicalprismp2localinterpolation.hhcommon/localinterpolation.hh
    hierarchical / hierarchicalp2 / hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2 / hierarchicalsimplexp2localinterpolation.hhcommon/localinterpolation.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localinterpolation.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    lagrange / lagrange/interpolation.hhcommon/localinterpolation.hh
    lagrange / lagrangecoefficients.hhlocalkey.hh
    lagrange / lagrangecube.hhcommon/localbasis.hh
    lagrange / lagrangecube.hhcommon/localinterpolation.hh
    lagrange / lagrangecube.hhlocalfiniteelementtraits.hh
    lagrange / lagrangecube.hhlocalkey.hh
    lagrange / lagrangelfecache.hhlocalfiniteelementvariantcache.hh
    lagrange / lagrangeprism.hhcommon/localbasis.hh
    lagrange / lagrangeprism.hhcommon/localinterpolation.hh
    lagrange / lagrangeprism.hhlocalfiniteelementtraits.hh
    lagrange / lagrangeprism.hhlocalkey.hh
    lagrange / lagrangepyramid.hhcommon/localbasis.hh
    lagrange / lagrangepyramid.hhcommon/localinterpolation.hh
    lagrange / lagrangepyramid.hhlocalfiniteelementtraits.hh
    lagrange / lagrangepyramid.hhlocalkey.hh
    lagrange / lagrangesimplex.hhcommon/localbasis.hh
    lagrange / lagrangesimplex.hhcommon/localinterpolation.hh
    lagrange / lagrangesimplex.hhlocalfiniteelementtraits.hh
    lagrange / lagrangesimplex.hhlocalkey.hh
    brezzidouglasfortinmarini / cube / localcoefficients.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
    whitney / edges0.5 / whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    whitney / edges0.5 / whitney/edges0.5/coefficients.hhlocalkey.hh
    whitney / edges0.5 / whitney/edges0.5/interpolation.hhcommon/localinterpolation.hh
    mimetic / mimeticall.hhcommon/localbasis.hh
    mimetic / mimeticall.hhlocalkey.hh
    monomial / monomiallocalbasis.hhcommon/localbasis.hh
    monomial / monomiallocalcoefficients.hhlocalkey.hh
    monomial / monomiallocalinterpolation.hhcommon/localinterpolation.hh
    nedelec / nedelec1stkindcube.hhcommon/localbasis.hh
    nedelec / nedelec1stkindcube.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindcube.hhcommon/localinterpolation.hh
    nedelec / nedelec1stkindcube.hhlocalkey.hh
    nedelec / nedelec1stkindsimplex.hhcommon/localbasis.hh
    nedelec / nedelec1stkindsimplex.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindsimplex.hhcommon/localinterpolation.hh
    nedelec / nedelec1stkindsimplex.hhlocalkey.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhlocalkey.hh
    lagrange / p0 / p0localbasis.hhcommon/localbasis.hh
    lagrange / p0 / p0localcoefficients.hhlocalkey.hh
    lagrange / p0 / p0localinterpolation.hhcommon/localinterpolation.hh
    meta / power / meta/power/coefficients.hhlocalkey.hh
    meta / power / meta/power/interpolation.hhcommon/localinterpolation.hh
    rannacherturek / rannacherturek/rannacherturek.hhlocalfiniteelementtraits.hh
    rannacherturek / rannachertureklocalcoefficients.hhlocalkey.hh
    rannacherturek / rannachertureklocalinterpolation.hhcommon/localbasis.hh
    rannacherturek / rannachertureklocalinterpolation.hhcommon/localinterpolation.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 / raviartthomas02d / raviartthomas02dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalinterpolation.hhcommon/localinterpolation.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
    refined / refinedp0 / refinedp0localinterpolation.hhcommon/localinterpolation.hh
    utility / dglocalcoefficients.hhlocalkey.hh
    utility / interpolationhelper.hhcommon/localinterpolation.hh
    utility / l2interpolation.hhcommon/localinterpolation.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/localinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini1cube2d / brezzidouglasmarini1cube2dlocalinterpolation.hhcommon/localinterpolation.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 / brezzidouglasmarini1simplex2d / brezzidouglasmarini1simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2cube2d / brezzidouglasmarini2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d.hhlocalfiniteelementtraits.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalbasis.hhcommon/localbasis.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalcoefficients.hhlocalkey.hh
    brezzidouglasmarini / brezzidouglasmarini2simplex2d / brezzidouglasmarini2simplex2dlocalinterpolation.hhcommon/localinterpolation.hh
    crouzeixraviart.hhcommon/localbasis.hh
    crouzeixraviart.hhcommon/localinterpolation.hh
    crouzeixraviart.hhlocalfiniteelementtraits.hh
    crouzeixraviart.hhlocalkey.hh
    dualmortarbasis / dualp1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualp1 / dualp1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualp1 / dualp1localcoefficients.hhlocalkey.hh
    dualmortarbasis / dualp1 / dualp1localinterpolation.hhcommon/localinterpolation.hh
    dualmortarbasis / dualpq1factory.hhvirtualinterface.hh
    dualmortarbasis / dualpq1factory.hhvirtualwrappers.hh
    dualmortarbasis / dualq1.hhlocalfiniteelementtraits.hh
    dualmortarbasis / dualq1 / dualq1localbasis.hhcommon/localbasis.hh
    dualmortarbasis / dualq1 / dualq1localcoefficients.hhlocalkey.hh
    dualmortarbasis / dualq1 / dualq1localinterpolation.hhcommon/localinterpolation.hh
    lagrange / emptypoints.hhlocalkey.hh
    hierarchical / hierarchicalp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalp2withelementbubble.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2.hhlocalfiniteelementtraits.hh
    hierarchical / hierarchicalprismp2 / hierarchicalprismp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalprismp2 / hierarchicalprismp2localinterpolation.hhcommon/localinterpolation.hh
    hierarchical / hierarchicalp2 / hierarchicalsimplexp2localbasis.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2 / hierarchicalsimplexp2localinterpolation.hhcommon/localinterpolation.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localbasis.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhcommon/localinterpolation.hh
    hierarchical / hierarchicalp2withelementbubble / hierarchicalsimplexp2withelementbubble.hhlocalkey.hh
    lagrange / lagrange/interpolation.hhcommon/localinterpolation.hh
    lagrange / lagrangecoefficients.hhlocalkey.hh
    lagrange / lagrangecube.hhcommon/localbasis.hh
    lagrange / lagrangecube.hhcommon/localinterpolation.hh
    lagrange / lagrangecube.hhlocalfiniteelementtraits.hh
    lagrange / lagrangecube.hhlocalkey.hh
    lagrange / lagrangelfecache.hhlocalfiniteelementvariantcache.hh
    lagrange / lagrangeprism.hhcommon/localbasis.hh
    lagrange / lagrangeprism.hhcommon/localinterpolation.hh
    lagrange / lagrangeprism.hhlocalfiniteelementtraits.hh
    lagrange / lagrangeprism.hhlocalkey.hh
    lagrange / lagrangepyramid.hhcommon/localbasis.hh
    lagrange / lagrangepyramid.hhcommon/localinterpolation.hh
    lagrange / lagrangepyramid.hhlocalfiniteelementtraits.hh
    lagrange / lagrangepyramid.hhlocalkey.hh
    lagrange / lagrangesimplex.hhcommon/localbasis.hh
    lagrange / lagrangesimplex.hhcommon/localinterpolation.hh
    lagrange / lagrangesimplex.hhlocalfiniteelementtraits.hh
    lagrange / lagrangesimplex.hhlocalkey.hh
    brezzidouglasfortinmarini / cube / localcoefficients.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
    whitney / edges0.5 / whitney/edges0.5/basis.hhlocaltoglobaladaptors.hh
    whitney / edges0.5 / whitney/edges0.5/coefficients.hhlocalkey.hh
    whitney / edges0.5 / whitney/edges0.5/interpolation.hhcommon/localinterpolation.hh
    mimetic / mimeticall.hhcommon/localbasis.hh
    mimetic / mimeticall.hhlocalkey.hh
    monomial / monomiallocalbasis.hhcommon/localbasis.hh
    monomial / monomiallocalcoefficients.hhlocalkey.hh
    monomial / monomiallocalinterpolation.hhcommon/localinterpolation.hh
    nedelec / nedelec1stkindcube.hhcommon/localbasis.hh
    nedelec / nedelec1stkindcube.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindcube.hhcommon/localinterpolation.hh
    nedelec / nedelec1stkindcube.hhlocalkey.hh
    nedelec / nedelec1stkindsimplex.hhcommon/localbasis.hh
    nedelec / nedelec1stkindsimplex.hhlocalfiniteelementtraits.hh
    nedelec / nedelec1stkindsimplex.hhcommon/localinterpolation.hh
    nedelec / nedelec1stkindsimplex.hhlocalkey.hh
    nedelec / nedelecsimplex / nedelecsimplexinterpolation.hhlocalkey.hh
    lagrange / p0 / p0localbasis.hhcommon/localbasis.hh
    lagrange / p0 / p0localcoefficients.hhlocalkey.hh
    lagrange / p0 / p0localinterpolation.hhcommon/localinterpolation.hh
    meta / power / meta/power/coefficients.hhlocalkey.hh
    meta / power / meta/power/interpolation.hhcommon/localinterpolation.hh
    rannacherturek / rannacherturek/rannacherturek.hhlocalfiniteelementtraits.hh
    rannacherturek / rannachertureklocalcoefficients.hhlocalkey.hh
    rannacherturek / rannachertureklocalinterpolation.hhcommon/localbasis.hh
    rannacherturek / rannachertureklocalinterpolation.hhcommon/localinterpolation.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 / raviartthomas02d / raviartthomas02dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas03d / raviartthomas03dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas / raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas / raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0prism / raviartthomas0prismlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas0pyramid / raviartthomas0pyramidlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas12d / raviartthomas12dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube2d / raviartthomas1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas1cube3d / raviartthomas1cube3dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas2cube2d / raviartthomas2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas3cube2d / raviartthomas3cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas / raviartthomas4cube2d / raviartthomas4cube2dlocalinterpolation.hhcommon/localinterpolation.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
    refined / refinedp0 / refinedp0localinterpolation.hhcommon/localinterpolation.hh
    utility / dglocalcoefficients.hhlocalkey.hh
    utility / interpolationhelper.hhcommon/localinterpolation.hh
    utility / l2interpolation.hhcommon/localinterpolation.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_000022_000012.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_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_000022_000017.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000017.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_000022_000021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000021.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_000022_000025.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000025.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_000022_000026.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000026.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_000022_000027.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000027.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_000022_000029.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000029.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_000022_000033.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000033.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_000022_000036.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000036.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_000022_000050.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000050.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_000022_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000022_000053.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.hhlfematrix.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+

    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.hhlfematrix.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_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 → 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_000024_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000024_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
    power / meta/power/interpolation.hhcommon/localinterpolation.hh
    \n+

    meta → common Relation

    File in dune/localfunctions/metaIncludes file in dune/localfunctions/common
    power / meta/power/coefficients.hhlocalkey.hh
    power / meta/power/interpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000024_000031.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000024_000031.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_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-

    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_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-

    monomial → common Relation

    File in dune/localfunctions/monomialIncludes file in dune/localfunctions/common
    monomiallocalbasis.hhcommon/localbasis.hh
    monomiallocalcoefficients.hhlocalkey.hh
    monomiallocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    monomial → common Relation

    File in dune/localfunctions/monomialIncludes file in dune/localfunctions/common
    monomiallocalbasis.hhcommon/localbasis.hh
    monomiallocalcoefficients.hhlocalkey.hh
    monomiallocalinterpolation.hhcommon/localinterpolation.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+

    nedelec → common Relation

    File in dune/localfunctions/nedelecIncludes file in dune/localfunctions/common
    nedelec1stkindcube.hhcommon/localbasis.hh
    nedelec1stkindcube.hhcommon/localinterpolation.hh
    nedelec1stkindcube.hhlocalfiniteelementtraits.hh
    nedelec1stkindcube.hhlocalkey.hh
    nedelec1stkindsimplex.hhcommon/localbasis.hh
    nedelec1stkindsimplex.hhcommon/localinterpolation.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_000027_000029.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000027_000029.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_000027_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000027_000053.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_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-

    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_000028_000029.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000029.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_000028_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000028_000053.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_000029_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000029_000053.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.hhlfematrix.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.hhlfematrix.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_000030_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000030_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
    p0localinterpolation.hhcommon/localinterpolation.hh
    \n+

    p0 → common Relation

    File in dune/localfunctions/lagrange/p0Includes file in dune/localfunctions/common
    p0localbasis.hhcommon/localbasis.hh
    p0localcoefficients.hhlocalkey.hh
    p0localinterpolation.hhcommon/localinterpolation.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-

    power → common Relation

    File in dune/localfunctions/meta/powerIncludes file in dune/localfunctions/common
    meta/power/coefficients.hhlocalkey.hh
    meta/power/interpolation.hhcommon/localinterpolation.hh
    \n+

    power → common Relation

    File in dune/localfunctions/meta/powerIncludes file in dune/localfunctions/common
    meta/power/coefficients.hhlocalkey.hh
    meta/power/interpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000032_000022.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000032_000022.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_000033_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000033_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
    rannachertureklocalinterpolation.hhcommon/localinterpolation.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_000033_000034.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000033_000034.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_000033_000035.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000033_000035.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_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-

    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_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-

    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_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-

    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
    raviartthomas02d / raviartthomas02dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas03d / raviartthomas03dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localinterpolation.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localinterpolation.hh
    raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas0prism / raviartthomas0prismlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas12d / raviartthomas12dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalinterpolation.hhcommon/localinterpolation.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
    raviartthomas02d / raviartthomas02dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas03d / raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03d / raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas03d / raviartthomas03dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhlocalkey.hh
    raviartthomas0cube2d / raviartthomas0cube2dall.hhcommon/localinterpolation.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhlocalkey.hh
    raviartthomas0cube3d / raviartthomas0cube3dall.hhcommon/localinterpolation.hh
    raviartthomas0prism / raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prism / raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas0prism / raviartthomas0prismlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas0pyramid / raviartthomas0pyramidlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas12d / raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12d / raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas12d / raviartthomas12dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube2d / raviartthomas1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube3d / raviartthomas1cube3dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas2cube2d / raviartthomas2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas3cube2d / raviartthomas3cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas4cube2d / raviartthomas4cube2dlocalinterpolation.hhcommon/localinterpolation.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_000036_000029.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000029.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_000036_000037.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000037.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_000036_000038.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000038.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_000036_000039.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000039.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_000036_000040.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000040.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_000036_000041.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000041.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_000036_000042.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000042.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_000036_000043.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000043.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_000036_000044.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000044.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_000036_000045.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000045.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_000036_000046.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000046.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_000036_000047.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000047.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_000036_000048.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000048.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_000036_000049.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000049.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_000036_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000036_000053.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_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-

    raviartthomas02d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas02dIncludes file in dune/localfunctions/common
    raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas02dlocalcoefficients.hhlocalkey.hh
    raviartthomas02dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas02d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas02dIncludes file in dune/localfunctions/common
    raviartthomas02dlocalbasis.hhcommon/localbasis.hh
    raviartthomas02dlocalcoefficients.hhlocalkey.hh
    raviartthomas02dlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas03d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas03dIncludes file in dune/localfunctions/common
    raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas03dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas03d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas03dIncludes file in dune/localfunctions/common
    raviartthomas03dlocalbasis.hhcommon/localbasis.hh
    raviartthomas03dlocalcoefficients.hhlocalkey.hh
    raviartthomas03dlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas0cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube2dIncludes file in dune/localfunctions/common
    raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2dall.hhcommon/localinterpolation.hh
    raviartthomas0cube2dall.hhlocalkey.hh
    \n+

    raviartthomas0cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube2dIncludes file in dune/localfunctions/common
    raviartthomas0cube2dall.hhcommon/localbasis.hh
    raviartthomas0cube2dall.hhcommon/localinterpolation.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_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-

    raviartthomas0cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube3dIncludes file in dune/localfunctions/common
    raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3dall.hhcommon/localinterpolation.hh
    raviartthomas0cube3dall.hhlocalkey.hh
    \n+

    raviartthomas0cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0cube3dIncludes file in dune/localfunctions/common
    raviartthomas0cube3dall.hhcommon/localbasis.hh
    raviartthomas0cube3dall.hhcommon/localinterpolation.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_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-

    raviartthomas0prism → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0prismIncludes file in dune/localfunctions/common
    raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas0prismlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas0prism → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0prismIncludes file in dune/localfunctions/common
    raviartthomas0prismlocalbasis.hhcommon/localbasis.hh
    raviartthomas0prismlocalcoefficients.hhlocalkey.hh
    raviartthomas0prismlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas0pyramid → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0pyramidIncludes file in dune/localfunctions/common
    raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas0pyramidlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas0pyramid → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas0pyramidIncludes file in dune/localfunctions/common
    raviartthomas0pyramidlocalbasis.hhcommon/localbasis.hh
    raviartthomas0pyramidlocalcoefficients.hhlocalkey.hh
    raviartthomas0pyramidlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas12d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas12dIncludes file in dune/localfunctions/common
    raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas12dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas12d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas12dIncludes file in dune/localfunctions/common
    raviartthomas12dlocalbasis.hhcommon/localbasis.hh
    raviartthomas12dlocalcoefficients.hhlocalkey.hh
    raviartthomas12dlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas1cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube2dIncludes file in dune/localfunctions/common
    raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas1cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube2dIncludes file in dune/localfunctions/common
    raviartthomas1cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube2dlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas1cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube3dIncludes file in dune/localfunctions/common
    raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube3dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas1cube3d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas1cube3dIncludes file in dune/localfunctions/common
    raviartthomas1cube3dlocalbasis.hhcommon/localbasis.hh
    raviartthomas1cube3dlocalcoefficients.hhlocalkey.hh
    raviartthomas1cube3dlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas2cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas2cube2dIncludes file in dune/localfunctions/common
    raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas2cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas2cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas2cube2dIncludes file in dune/localfunctions/common
    raviartthomas2cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas2cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas2cube2dlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas3cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas3cube2dIncludes file in dune/localfunctions/common
    raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas3cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas3cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas3cube2dIncludes file in dune/localfunctions/common
    raviartthomas3cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas3cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas3cube2dlocalinterpolation.hhcommon/localinterpolation.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-

    raviartthomas4cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas4cube2dIncludes file in dune/localfunctions/common
    raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas4cube2dlocalinterpolation.hhcommon/localinterpolation.hh
    \n+

    raviartthomas4cube2d → common Relation

    File in dune/localfunctions/raviartthomas/raviartthomas4cube2dIncludes file in dune/localfunctions/common
    raviartthomas4cube2dlocalbasis.hhcommon/localbasis.hh
    raviartthomas4cube2dlocalcoefficients.hhlocalkey.hh
    raviartthomas4cube2dlocalinterpolation.hhcommon/localinterpolation.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-

    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_000049_000029.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000049_000029.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_000049_000053.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000049_000053.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_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+

    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
    refinedp0 / refinedp0localinterpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000021.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_000050_000051.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000051.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_000050_000052.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000050_000052.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_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-

    refinedp0 → common Relation

    File in dune/localfunctions/refined/refinedp0Includes file in dune/localfunctions/common
    refinedp0localbasis.hhcommon/localbasis.hh
    refinedp0localcoefficients.hhlocalkey.hh
    refinedp0localinterpolation.hhcommon/localinterpolation.hh
    \n+

    refinedp0 → common Relation

    File in dune/localfunctions/refined/refinedp0Includes file in dune/localfunctions/common
    refinedp0localbasis.hhcommon/localbasis.hh
    refinedp0localcoefficients.hhlocalkey.hh
    refinedp0localinterpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_000008.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000051_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_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-

    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_000053_000007.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000053_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
    interpolationhelper.hhcommon/localinterpolation.hh
    l2interpolation.hhcommon/localinterpolation.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_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-

    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
    edges0.5 / whitney/edges0.5/interpolation.hhcommon/localinterpolation.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
    edges0.5 / whitney/edges0.5/interpolation.hhcommon/localinterpolation.hh
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000054_000016.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000054_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_000054_000021.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/dir_000054_000021.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": "@@ -209,41 +209,41 @@\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 Files

     brezzidouglasmarini.hh
     brezzidouglasmarini.hh
     
     crouzeixraviart.hh
     crouzeixraviart.hh
     
     dualmortarbasis.hh
     dualmortarbasis.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,15 +89,15 @@\n \n \n \n \n \n \n-\n+\n \n \n \n

    \n Files

     localbasis.hh
     
     localcoefficients.hh
     localcoefficients.hh
     
     localinterpolation.hh
     
    \n \n \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_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,67 +100,67 @@\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+\n \n-\n+\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

     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
     
     p1.hh
     p1.hh
     
     p2.hh
     p2.hh
     
     p23d.hh
     p23d.hh
     
     pk.hh
     pk.hh
     
     pk1d.hh
     pk1d.hh
     
     pk2d.hh
     pk2d.hh
     
     pk3d.hh
     pk3d.hh
     
     pq22d.hh
     pq22d.hh
     
     pqkfactory.hh
     pqkfactory.hh
     
     prismp1.hh
     prismp1.hh
     
     prismp2.hh
     prismp2.hh
     
     pyramidp1.hh
     pyramidp1.hh
     
     pyramidp2.hh
     pyramidp2.hh
     
     q1.hh
     q1.hh
     
     q2.hh
     q2.hh
     
     qk.hh
     qk.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": "@@ -114,19 +114,19 @@\n  hierarchicalp2withelementbubble\n  \n  hierarchicalprismp2\n  \n \n \n-\n+\n \n-\n+\n \n-\n+\n \n

    \n Files

     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_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 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
     
     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 Files

     monomiallocalbasis.hh
     monomiallocalbasis.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,18 +9,18 @@\n modules.txt\n /build/reproducible-path/dune-localfunctions-2.9.0/doc/doxygen/\n a00005.html\n \n \n bdfmcube.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasfortinmarini/\n- a00041.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ a00509.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/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.9.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n@@ -38,16 +38,16 @@\n a04464.html\n Dune::LocalBasisTraits\n Dune\n \n \n localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n- a00035.html\n- dune/localfunctions/common/localkey.hh\n+ a00500.html\n+ dune/localfunctions/common/localkey.hh\n Dune::BDFMCubeLocalCoefficients\n Dune\n \n \n brezzidouglasfortinmarini/cube/localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasfortinmarini/cube/\n a04467.html\n@@ -60,1704 +60,1767 @@\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/common/\n a04470.html\n Dune\n \n \n brezzidouglasmarini.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/\n- a00446.html\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinicube.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarinisimplex.hh\n+ a00563.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.9.0/dune/localfunctions/brezzidouglasmarini/\n- a00566.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalbasis.hh\n- brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalcoefficients.hh\n- brezzidouglasmarini1cube2d/brezzidouglasmarini1cube2dlocalinterpolation.hh\n+ a00125.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.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/\n- a00539.html\n+ a00137.html\n ../../common/localbasis.hh\n Dune::BDM1Cube2DLocalBasis\n Dune\n \n \n brezzidouglasmarini1cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/\n- a00542.html\n- ../../common/localkey.hh\n+ a00134.html\n+ ../../common/localkey.hh\n Dune::BDM1Cube2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini1cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d/\n- a00545.html\n+ a00131.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::BDM1Cube2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini1cube3d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/\n- a00551.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalbasis.hh\n- brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalcoefficients.hh\n- brezzidouglasmarini1cube3d/brezzidouglasmarini1cube3dlocalinterpolation.hh\n+ a00128.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.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/\n- a00503.html\n+ a00152.html\n ../../common/localbasis.hh\n Dune::BDM1Cube3DLocalBasis\n Dune\n \n \n brezzidouglasmarini1cube3dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/\n- a00506.html\n- ../../common/localkey.hh\n+ a00149.html\n+ ../../common/localkey.hh\n Dune::BDM1Cube3DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini1cube3dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d/\n- a00509.html\n+ a00155.html\n Dune::BDM1Cube3DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini1simplex2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/\n- a00527.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalbasis.hh\n- brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalcoefficients.hh\n- brezzidouglasmarini1simplex2d/brezzidouglasmarini1simplex2dlocalinterpolation.hh\n+ a00119.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.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/\n- a00515.html\n+ a00170.html\n ../../common/localbasis.hh\n Dune::BDM1Simplex2DLocalBasis\n Dune\n \n \n brezzidouglasmarini1simplex2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/\n- a00521.html\n- ../../common/localkey.hh\n+ a00167.html\n+ ../../common/localkey.hh\n Dune::BDM1Simplex2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini1simplex2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d/\n- a00518.html\n+ a00164.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::BDM1Simplex2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini2cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/\n- a00524.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalbasis.hh\n- brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalcoefficients.hh\n- brezzidouglasmarini2cube2d/brezzidouglasmarini2cube2dlocalinterpolation.hh\n+ a00122.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.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/\n- a00560.html\n+ a00113.html\n ../../common/localbasis.hh\n Dune::BDM2Cube2DLocalBasis\n Dune\n \n \n brezzidouglasmarini2cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/\n- a00554.html\n- ../../common/localkey.hh\n+ a00110.html\n+ ../../common/localkey.hh\n Dune::BDM2Cube2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini2cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d/\n- a00557.html\n+ a00116.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::BDM2Cube2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarini2simplex2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/\n- a00548.html\n- ../common/localfiniteelementtraits.hh\n- brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalbasis.hh\n- brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalcoefficients.hh\n- brezzidouglasmarini2simplex2d/brezzidouglasmarini2simplex2dlocalinterpolation.hh\n+ a00107.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.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/\n- a00530.html\n+ a00146.html\n ../../common/localbasis.hh\n Dune::BDM2Simplex2DLocalBasis\n Dune\n \n \n brezzidouglasmarini2simplex2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/\n- a00536.html\n- ../../common/localkey.hh\n+ a00140.html\n+ ../../common/localkey.hh\n Dune::BDM2Simplex2DLocalCoefficients\n Dune\n \n \n brezzidouglasmarini2simplex2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d/\n- a00533.html\n+ a00143.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::BDM2Simplex2DLocalInterpolation\n Dune\n \n \n brezzidouglasmarinicube.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/brezzidouglasmarini/\n- a00563.html\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube2d.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1cube3d.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2cube2d.hh\n+ a00158.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.9.0/dune/localfunctions/brezzidouglasmarini/\n- a00512.html\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini1simplex2d.hh\n- dune/localfunctions/brezzidouglasmarini/brezzidouglasmarini2simplex2d.hh\n+ a00161.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.9.0/dune/localfunctions/common/\n- a00143.html\n- dune/localfunctions/common/localkey.hh\n+ a00536.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.9.0/dune/localfunctions/common/\n- a00164.html\n+ a00548.html\n Dune::FiniteElementInterfaceSwitch\n Dune::BasisInterfaceSwitch\n Dune\n \n \n localfiniteelementtraits.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/common/\n- a00152.html\n+ a00557.html\n Dune::LocalFiniteElementTraits\n Dune\n \n \n localfiniteelementvariant.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/common/\n- a00161.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ a00554.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.9.0/dune/localfunctions/common/\n- a00155.html\n- dune/localfunctions/common/localfiniteelementvariant.hh\n+ a00551.html\n+ dune/localfunctions/common/localfiniteelementvariant.hh\n Dune::LocalFiniteElementVariantCache\n Dune\n \n \n localkey.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/common/\n- a00140.html\n+ a00542.html\n Dune::LocalKey\n Dune\n \n \n localtoglobaladaptors.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/common/\n- a00158.html\n+ a00539.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.9.0/dune/localfunctions/common/\n- a00146.html\n+ a00545.html\n dune/localfunctions/common/localbasis.hh\n dune/localfunctions/common/localinterpolation.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::LocalFiniteElementFunctionBase\n Dune::LocalFiniteElementFunctionBase::FunctionBaseDummy::Traits\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.9.0/dune/localfunctions/common/\n- a00149.html\n+ a00560.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.9.0/dune/localfunctions/\n- a00044.html\n+ a00050.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::CrouzeixRaviartLocalFiniteElement\n Dune\n \n \n dualmortarbasis.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/\n- a00449.html\n- dune/localfunctions/dualmortarbasis/dualp1.hh\n- dune/localfunctions/dualmortarbasis/dualq1.hh\n+ a00224.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.9.0/dune/localfunctions/dualmortarbasis/\n- a00119.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dualp1/dualp1localbasis.hh\n- dualp1/dualp1localcoefficients.hh\n- dualp1/dualp1localinterpolation.hh\n+ a00089.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.9.0/dune/localfunctions/dualmortarbasis/dualp1/\n- a00107.html\n+ a00083.html\n dune/localfunctions/common/localbasis.hh\n Dune::DualP1LocalBasis\n Dune\n \n \n dualp1localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/dualmortarbasis/dualp1/\n- a00113.html\n- dune/localfunctions/common/localkey.hh\n+ a00080.html\n+ dune/localfunctions/common/localkey.hh\n Dune::DualP1LocalCoefficients\n Dune\n \n \n dualp1localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/dualmortarbasis/dualp1/\n- a00110.html\n+ a00086.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::DualP1LocalInterpolation\n Dune\n \n \n dualpq1factory.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/dualmortarbasis/\n- a00131.html\n- dune/localfunctions/common/virtualinterface.hh\n- dune/localfunctions/common/virtualwrappers.hh\n- dune/localfunctions/dualmortarbasis.hh\n+ a00101.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.9.0/dune/localfunctions/dualmortarbasis/\n- a00116.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+ a00104.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.9.0/dune/localfunctions/dualmortarbasis/dualq1/\n- a00122.html\n+ a00098.html\n dune/localfunctions/common/localbasis.hh\n Dune::DualQ1LocalBasis\n Dune\n \n \n dualq1localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/dualmortarbasis/dualq1/\n- a00125.html\n- dune/localfunctions/common/localkey.hh\n+ a00095.html\n+ dune/localfunctions/common/localkey.hh\n Dune::DualQ1LocalCoefficients\n Dune\n \n \n dualq1localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/dualmortarbasis/dualq1/\n- a00128.html\n+ a00092.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::DualQ1LocalInterpolation\n Dune\n \n \n hierarchical.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/\n- a00134.html\n- dune/localfunctions/hierarchical/hierarchicalp2.hh\n- dune/localfunctions/hierarchical/hierarchicalp2withelementbubble.hh\n- dune/localfunctions/hierarchical/hierarchicalprismp2.hh\n+ a00227.html\n+ dune/localfunctions/hierarchical/hierarchicalp2.hh\n+ dune/localfunctions/hierarchical/hierarchicalp2withelementbubble.hh\n+ dune/localfunctions/hierarchical/hierarchicalprismp2.hh\n \n \n hierarchicalp2.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/hierarchical/\n- a00080.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- hierarchicalp2/hierarchicalsimplexp2localbasis.hh\n- hierarchicalp2/hierarchicalsimplexp2localinterpolation.hh\n+ a00521.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.9.0/dune/localfunctions/hierarchical/hierarchicalp2/\n- a00086.html\n+ a00533.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.9.0/dune/localfunctions/hierarchical/hierarchicalp2/\n- a00083.html\n+ a00530.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::HierarchicalSimplexP2LocalInterpolation\n Dune\n \n \n hierarchicalp2withelementbubble.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/hierarchical/\n- a00101.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/hierarchicalsimplexp2withelementbubble.hh\n+ a00518.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.9.0/dune/localfunctions/hierarchical/hierarchicalp2withelementbubble/\n- a00098.html\n+ a00515.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n dune/localfunctions/common/localinterpolation.hh\n Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis\n Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 1 >\n Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 2 >\n Dune::HierarchicalSimplexP2WithElementBubbleLocalBasis< D, R, 3 >\n Dune::HierarchicalSimplexP2WithElementBubbleLocalCoefficients\n Dune::HierarchicalSimplexP2WithElementBubbleLocalInterpolation\n Dune\n \n \n hierarchicalprismp2.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/hierarchical/\n- a00089.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/lagrange/lagrangeprism.hh\n- hierarchicalprismp2/hierarchicalprismp2localbasis.hh\n- hierarchicalprismp2/hierarchicalprismp2localinterpolation.hh\n+ a00512.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.9.0/dune/localfunctions/hierarchical/hierarchicalprismp2/\n- a00092.html\n+ a00524.html\n dune/localfunctions/common/localbasis.hh\n Dune::HierarchicalPrismP2LocalBasis\n Dune\n \n \n hierarchicalprismp2localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/hierarchical/hierarchicalprismp2/\n- a00095.html\n+ a00527.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::HierarchicalPrismP2LocalInterpolation\n Dune\n \n \n lagrange.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/\n- a00458.html\n+ a00494.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 emptypoints.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00269.html\n- dune/localfunctions/common/localkey.hh\n+ a00458.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.9.0/dune/localfunctions/lagrange/\n- a00209.html\n- dune/localfunctions/lagrange/emptypoints.hh\n- dune/localfunctions/utility/field.hh\n+ a00413.html\n+ dune/localfunctions/lagrange/emptypoints.hh\n+ dune/localfunctions/utility/field.hh\n Dune::EquidistantPointSet\n Dune\n \n \n lagrangebasis.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00215.html\n- dune/localfunctions/utility/defaultbasisfactory.hh\n- dune/localfunctions/utility/monomialbasis.hh\n- dune/localfunctions/lagrange/interpolation.hh\n+ a00419.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.9.0/dune/localfunctions/lagrange/\n- a00266.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/common/localkey.hh\n+ a00461.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.9.0/dune/localfunctions/lagrange/\n- a00254.html\n+ a00470.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangeCubeLocalFiniteElement\n Dune\n \n \n lagrangelfecache.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00233.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+ a00434.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.9.0/dune/localfunctions/lagrange/\n- a00236.html\n+ a00410.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangePrismLocalFiniteElement\n Dune\n \n \n lagrangepyramid.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00290.html\n+ a00416.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangePyramidLocalFiniteElement\n Dune\n \n \n lagrangesimplex.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00275.html\n+ a00473.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::LagrangeSimplexLocalFiniteElement\n Dune\n \n \n p0.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00263.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- p0/p0localbasis.hh\n- p0/p0localcoefficients.hh\n- p0/p0localinterpolation.hh\n+ a00488.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.9.0/dune/localfunctions/lagrange/p0/\n- a00281.html\n+ a00446.html\n dune/localfunctions/common/localbasis.hh\n Dune::P0LocalBasis\n Dune\n \n \n p0localcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/p0/\n- a00284.html\n- dune/localfunctions/common/localkey.hh\n+ a00452.html\n+ dune/localfunctions/common/localkey.hh\n Dune::P0LocalCoefficients\n Dune\n \n \n p0localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/p0/\n- a00278.html\n+ a00449.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::P0LocalInterpolation\n Dune\n \n \n p1.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00245.html\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00428.html\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune\n \n \n p2.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00242.html\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00440.html\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune\n \n \n p23d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00251.html\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00491.html\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune\n \n \n pk.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00287.html\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00485.html\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune\n \n \n pk1d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00224.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00479.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.9.0/dune/localfunctions/lagrange/\n- a00212.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00437.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 pk3d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00206.html\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n+ a00407.html\n+ dune/localfunctions/lagrange/lagrangesimplex.hh\n Dune\n \n \n pq22d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00230.html\n- dune/localfunctions/common/localfiniteelementvariant.hh\n- dune/localfunctions/lagrange/lagrangesimplex.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n+ a00425.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.9.0/dune/localfunctions/lagrange/\n- a00221.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+ a00476.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 prismp1.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00260.html\n- dune/localfunctions/lagrange/lagrangeprism.hh\n+ a00443.html\n+ dune/localfunctions/lagrange/lagrangeprism.hh\n Dune\n \n \n prismp2.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00239.html\n- dune/localfunctions/lagrange/lagrangeprism.hh\n+ a00464.html\n+ dune/localfunctions/lagrange/lagrangeprism.hh\n Dune\n \n \n pyramidp1.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00227.html\n- dune/localfunctions/lagrange/lagrangepyramid.hh\n+ a00482.html\n+ dune/localfunctions/lagrange/lagrangepyramid.hh\n Dune\n \n \n pyramidp2.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00248.html\n- dune/localfunctions/lagrange/lagrangepyramid.hh\n+ a00467.html\n+ dune/localfunctions/lagrange/lagrangepyramid.hh\n Dune\n \n \n q1.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00218.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/common/localtoglobaladaptors.hh\n- dune/localfunctions/lagrange/lagrangecube.hh\n+ a00455.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.9.0/dune/localfunctions/lagrange/\n- a00272.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+ a00422.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 qk.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a00257.html\n- dune/localfunctions/lagrange/lagrangecube.hh\n+ a00431.html\n+ dune/localfunctions/lagrange/lagrangecube.hh\n Dune\n \n \n power.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/meta/\n- a00452.html\n- dune/localfunctions/meta/power/basis.hh\n- dune/localfunctions/meta/power/coefficients.hh\n- dune/localfunctions/meta/power/interpolation.hh\n+ a00014.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.9.0/dune/localfunctions/meta/power/\n+ a04473.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.9.0/dune/localfunctions/whitney/edges0.5/\n+ a04476.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.9.0/dune/localfunctions/meta/power/\n+ a04479.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.9.0/dune/localfunctions/whitney/edges0.5/\n+ a04482.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.9.0/dune/localfunctions/lagrange/\n+ a04485.html\n+ dune/localfunctions/common/localinterpolation.hh\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.9.0/dune/localfunctions/meta/power/\n+ a04488.html\n+ dune/localfunctions/common/localinterpolation.hh\n+ Dune::PowerInterpolation\n+ Dune\n+ \n+ \n+ whitney/edges0.5/interpolation.hh\n+ /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/whitney/edges0.5/\n+ a04491.html\n+ dune/localfunctions/whitney/edges0.5/common.hh\n+ dune/localfunctions/common/localinterpolation.hh\n+ Dune::EdgeS0_5Interpolation\n+ Dune\n+ \n+ \n mimetic.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/\n- a00293.html\n- common/localfiniteelementtraits.hh\n- mimetic/mimeticall.hh\n+ a00566.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.9.0/dune/localfunctions/mimetic/\n- a00137.html\n+ a00230.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.9.0/dune/localfunctions/\n- a00053.html\n- common/localfiniteelementtraits.hh\n- common/localtoglobaladaptors.hh\n- monomial/monomiallocalbasis.hh\n+ a00179.html\n+ common/localfiniteelementtraits.hh\n+ common/localtoglobaladaptors.hh\n+ monomial/monomiallocalbasis.hh\n monomial/monomiallocalcoefficients.hh\n- monomial/monomiallocalinterpolation.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.9.0/dune/localfunctions/monomial/\n- a00071.html\n+ a00077.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.9.0/dune/localfunctions/monomial/\n a00074.html\n- ../common/localkey.hh\n+ ../common/localkey.hh\n Dune::MonomialLocalCoefficients\n Dune\n \n \n monomiallocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/monomial/\n- a00077.html\n+ a00071.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::MonomialLocalInterpolation\n Dune\n \n \n nedelec.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/\n- a00188.html\n- dune/localfunctions/nedelec/nedelec1stkindsimplex.hh\n- dune/localfunctions/nedelec/nedelec1stkindcube.hh\n+ a00011.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.9.0/dune/localfunctions/nedelec/\n- a00056.html\n+ a00245.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::Nedelec1stKindCubeLocalFiniteElement\n Dune\n \n \n nedelec1stkindsimplex.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/nedelec/\n- a00068.html\n+ a00242.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localfiniteelementtraits.hh\n+ dune/localfunctions/common/localfiniteelementtraits.hh\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n Dune::Nedelec1stKindSimplexLocalFiniteElement\n Dune\n \n \n nedelecsimplexbasis.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/nedelec/nedelecsimplex/\n- a00059.html\n- dune/localfunctions/utility/defaultbasisfactory.hh\n- nedelecsimplexinterpolation.hh\n- nedelecsimplexprebasis.hh\n+ a00239.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.9.0/dune/localfunctions/nedelec/nedelecsimplex/\n- a00065.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+ a00236.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.9.0/dune/localfunctions/nedelec/nedelecsimplex/\n- a00062.html\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00233.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.9.0/dune/localfunctions/\n- a00104.html\n+ a00497.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.9.0/dune/localfunctions/orthonormal/\n- a00050.html\n- dune/localfunctions/utility/polynomialbasis.hh\n- dune/localfunctions/orthonormal/orthonormalcompute.hh\n+ a00248.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.9.0/dune/localfunctions/orthonormal/\n- a00047.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/lfematrix.hh\n- dune/localfunctions/utility/monomialbasis.hh\n- dune/localfunctions/utility/multiindex.hh\n+ a00251.html\n+ dune/localfunctions/utility/field.hh\n+ dune/localfunctions/utility/lfematrix.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.9.0/dune/localfunctions/\n- a00185.html\n- dune/localfunctions/rannacherturek/rannacherturek.hh\n+ a00065.html\n+ dune/localfunctions/rannacherturek/rannacherturek.hh\n \n \n rannacherturek/rannacherturek.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/rannacherturek/\n- a04473.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- rannachertureklocalbasis.hh\n- rannachertureklocalcoefficients.hh\n- rannachertureklocalinterpolation.hh\n+ a04494.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.9.0/dune/localfunctions/rannacherturek/rannacherturek2d/\n- a00173.html\n+ a00053.html\n dune/localfunctions/common/localbasis.hh\n Dune::RannacherTurek2DLocalBasis\n Dune\n \n \n rannacherturek3dlocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/rannacherturek/rannacherturek3d/\n- a00170.html\n+ a00056.html\n dune/localfunctions/common/localbasis.hh\n Dune::RannacherTurek3DLocalBasis\n Dune\n \n \n rannachertureklocalbasis.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/rannacherturek/\n- a00176.html\n- rannacherturek2d/rannacherturek2dlocalbasis.hh\n- rannacherturek3d/rannacherturek3dlocalbasis.hh\n+ a00059.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.9.0/dune/localfunctions/rannacherturek/\n- a00179.html\n- dune/localfunctions/common/localkey.hh\n+ a00068.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RannacherTurekLocalCoefficients\n Dune\n \n \n rannachertureklocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/rannacherturek/\n- a00182.html\n+ a00062.html\n dune/localfunctions/common/localbasis.hh\n dune/localfunctions/common/localinterpolation.hh\n Dune::RannacherTurekLocalInterpolation\n Dune\n \n \n raviartthomas.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/\n- a00167.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+ a00254.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.9.0/dune/localfunctions/raviartthomas/\n- a00305.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas02d/raviartthomas02dlocalbasis.hh\n- raviartthomas02d/raviartthomas02dlocalcoefficients.hh\n- raviartthomas02d/raviartthomas02dlocalinterpolation.hh\n+ a00395.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.9.0/dune/localfunctions/raviartthomas/raviartthomas02d/\n- a00404.html\n+ a00263.html\n dune/localfunctions/common/localbasis.hh\n Dune::RT02DLocalBasis\n Dune\n \n \n raviartthomas02dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas02d/\n- a00401.html\n- dune/localfunctions/common/localkey.hh\n+ a00257.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RT02DLocalCoefficients\n Dune\n \n \n raviartthomas02dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas02d/\n- a00407.html\n+ a00260.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT02DLocalInterpolation\n Dune\n \n \n raviartthomas03d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00425.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas03d/raviartthomas03dlocalbasis.hh\n- raviartthomas03d/raviartthomas03dlocalcoefficients.hh\n- raviartthomas03d/raviartthomas03dlocalinterpolation.hh\n+ a00329.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.9.0/dune/localfunctions/raviartthomas/raviartthomas03d/\n- a00320.html\n+ a00374.html\n dune/localfunctions/common/localbasis.hh\n Dune::RT03DLocalBasis\n Dune\n \n \n raviartthomas03dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas03d/\n- a00317.html\n- dune/localfunctions/common/localkey.hh\n+ a00380.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RT03DLocalCoefficients\n Dune\n \n \n raviartthomas03dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas03d/\n- a00323.html\n+ a00377.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT03DLocalInterpolation\n Dune\n \n \n raviartthomas0cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00410.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas0cube2d/raviartthomas0cube2dall.hh\n+ a00269.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.9.0/dune/localfunctions/raviartthomas/raviartthomas0cube2d/\n- a00377.html\n+ a00326.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT0Cube2DLocalBasis\n Dune::RT0Cube2DLocalInterpolation\n Dune::RT0Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas0cube3d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00437.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- raviartthomas0cube3d/raviartthomas0cube3dall.hh\n+ a00368.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.9.0/dune/localfunctions/raviartthomas/raviartthomas0cube3d/\n- a00440.html\n+ a00371.html\n dune/localfunctions/common/localbasis.hh\n- dune/localfunctions/common/localkey.hh\n+ dune/localfunctions/common/localkey.hh\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT0Cube3DLocalBasis\n Dune::RT0Cube3DLocalInterpolation\n Dune::RT0Cube3DLocalCoefficients\n Dune\n \n \n raviartthomas0prism.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00374.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas0prism/raviartthomas0prismlocalbasis.hh\n- raviartthomas0prism/raviartthomas0prismlocalcoefficients.hh\n- raviartthomas0prism/raviartthomas0prismlocalinterpolation.hh\n+ a00341.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.9.0/dune/localfunctions/raviartthomas/raviartthomas0prism/\n- a00314.html\n+ a00293.html\n ../../common/localbasis.hh\n Dune::RT0PrismLocalBasis\n Dune\n \n \n raviartthomas0prismlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas0prism/\n- a00308.html\n- ../../common/localkey.hh\n+ a00299.html\n+ ../../common/localkey.hh\n Dune::RT0PrismLocalCoefficients\n Dune\n \n \n raviartthomas0prismlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas0prism/\n- a00311.html\n+ a00296.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT0PrismLocalInterpolation\n Dune\n \n \n raviartthomas0pyramid.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00326.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas0pyramid/raviartthomas0pyramidlocalbasis.hh\n- raviartthomas0pyramid/raviartthomas0pyramidlocalcoefficients.hh\n- raviartthomas0pyramid/raviartthomas0pyramidlocalinterpolation.hh\n+ a00314.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.9.0/dune/localfunctions/raviartthomas/raviartthomas0pyramid/\n- a00359.html\n+ a00308.html\n ../../common/localbasis.hh\n Dune::RT0PyramidLocalBasis\n Dune\n \n \n raviartthomas0pyramidlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas0pyramid/\n- a00356.html\n- ../../common/localkey.hh\n+ a00305.html\n+ ../../common/localkey.hh\n Dune::RT0PyramidLocalCoefficients\n Dune\n \n \n raviartthomas0pyramidlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas0pyramid/\n- a00362.html\n+ a00302.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT0PyramidLocalInterpolation\n Dune\n \n \n raviartthomas12d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00398.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.9.0/dune/localfunctions/raviartthomas/raviartthomas12d/\n- a00434.html\n+ a00353.html\n ../../common/localbasis.hh\n Dune::RT12DLocalBasis\n Dune\n \n \n raviartthomas12dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas12d/\n- a00431.html\n- ../../common/localkey.hh\n+ a00347.html\n+ ../../common/localkey.hh\n Dune::RT12DLocalCoefficients\n Dune\n \n \n raviartthomas12dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas12d/\n- a00428.html\n+ a00350.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT12DLocalInterpolation\n Dune\n \n \n raviartthomas1cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00419.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas1cube2d/raviartthomas1cube2dlocalbasis.hh\n- raviartthomas1cube2d/raviartthomas1cube2dlocalinterpolation.hh\n- raviartthomas1cube2d/raviartthomas1cube2dlocalcoefficients.hh\n+ a00311.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.9.0/dune/localfunctions/raviartthomas/raviartthomas1cube2d/\n- a00395.html\n+ a00290.html\n ../../common/localbasis.hh\n Dune::RT1Cube2DLocalBasis\n Dune\n \n \n raviartthomas1cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas1cube2d/\n- a00392.html\n- ../../common/localkey.hh\n+ a00287.html\n+ ../../common/localkey.hh\n Dune::RT1Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas1cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas1cube2d/\n- a00389.html\n+ a00284.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT1Cube2DLocalInterpolation\n Dune\n \n \n raviartthomas1cube3d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00413.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas1cube3d/raviartthomas1cube3dlocalbasis.hh\n- raviartthomas1cube3d/raviartthomas1cube3dlocalcoefficients.hh\n- raviartthomas1cube3d/raviartthomas1cube3dlocalinterpolation.hh\n+ a00344.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.9.0/dune/localfunctions/raviartthomas/raviartthomas1cube3d/\n- a00344.html\n+ a00272.html\n ../../common/localbasis.hh\n Dune::RT1Cube3DLocalBasis\n Dune\n \n \n raviartthomas1cube3dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas1cube3d/\n- a00338.html\n- ../../common/localkey.hh\n+ a00275.html\n+ ../../common/localkey.hh\n Dune::RT1Cube3DLocalCoefficients\n Dune\n \n \n raviartthomas1cube3dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas1cube3d/\n- a00341.html\n+ a00278.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT1Cube3DLocalInterpolation\n Dune\n \n \n raviartthomas2cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00371.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas2cube2d/raviartthomas2cube2dlocalbasis.hh\n- raviartthomas2cube2d/raviartthomas2cube2dlocalcoefficients.hh\n- raviartthomas2cube2d/raviartthomas2cube2dlocalinterpolation.hh\n+ a00365.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.9.0/dune/localfunctions/raviartthomas/raviartthomas2cube2d/\n- a00332.html\n+ a00392.html\n ../../common/localbasis.hh\n Dune::RT2Cube2DLocalBasis\n Dune\n \n \n raviartthomas2cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas2cube2d/\n- a00329.html\n- ../../common/localkey.hh\n+ a00386.html\n+ ../../common/localkey.hh\n Dune::RT2Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas2cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas2cube2d/\n- a00335.html\n+ a00389.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT2Cube2DLocalInterpolation\n Dune\n \n \n raviartthomas3cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00365.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas3cube2d/raviartthomas3cube2dlocalbasis.hh\n- raviartthomas3cube2d/raviartthomas3cube2dlocalcoefficients.hh\n- raviartthomas3cube2d/raviartthomas3cube2dlocalinterpolation.hh\n+ a00401.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.9.0/dune/localfunctions/raviartthomas/raviartthomas3cube2d/\n- a00296.html\n+ a00335.html\n ../../common/localbasis.hh\n Dune::RT3Cube2DLocalBasis\n Dune\n \n \n raviartthomas3cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas3cube2d/\n- a00299.html\n- ../../common/localkey.hh\n+ a00338.html\n+ ../../common/localkey.hh\n Dune::RT3Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas3cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas3cube2d/\n- a00302.html\n+ a00332.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT3Cube2DLocalInterpolation\n Dune\n \n \n raviartthomas4cube2d.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00416.html\n- ../common/localfiniteelementtraits.hh\n- raviartthomas4cube2d/raviartthomas4cube2dlocalbasis.hh\n- raviartthomas4cube2d/raviartthomas4cube2dlocalcoefficients.hh\n- raviartthomas4cube2d/raviartthomas4cube2dlocalinterpolation.hh\n+ a00398.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.9.0/dune/localfunctions/raviartthomas/raviartthomas4cube2d/\n- a00350.html\n+ a00320.html\n ../../common/localbasis.hh\n Dune::RT4Cube2DLocalBasis\n Dune\n \n \n raviartthomas4cube2dlocalcoefficients.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas4cube2d/\n- a00347.html\n- ../../common/localkey.hh\n+ a00317.html\n+ ../../common/localkey.hh\n Dune::RT4Cube2DLocalCoefficients\n Dune\n \n \n raviartthomas4cube2dlocalinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/raviartthomas4cube2d/\n- a00353.html\n+ a00323.html\n dune/localfunctions/common/localinterpolation.hh\n Dune::RT4Cube2DLocalInterpolation\n Dune\n \n \n raviartthomascube.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/raviartthomas/\n- a00368.html\n- raviartthomas0cube2d.hh\n- raviartthomas0cube3d.hh\n- raviartthomas1cube2d.hh\n- raviartthomas1cube3d.hh\n- raviartthomas2cube2d.hh\n- raviartthomas3cube2d.hh\n- raviartthomas4cube2d.hh\n+ a00281.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.9.0/dune/localfunctions/raviartthomas/\n- a00422.html\n- dune/localfunctions/raviartthomas.hh\n- dune/localfunctions/common/localfiniteelementvariantcache.hh\n+ a00266.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.9.0/dune/localfunctions/raviartthomas/\n- a00443.html\n+ a00383.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.9.0/dune/localfunctions/raviartthomas/raviartthomassimplex/\n- a00383.html\n- dune/localfunctions/utility/defaultbasisfactory.hh\n- raviartthomassimplexinterpolation.hh\n- raviartthomassimplexprebasis.hh\n+ a00362.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.9.0/dune/localfunctions/raviartthomas/raviartthomassimplex/\n- a00386.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+ a00356.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.9.0/dune/localfunctions/raviartthomas/raviartthomassimplex/\n- a00380.html\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00359.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.9.0/dune/localfunctions/\n- a00455.html\n- dune/localfunctions/refined/refinedp0.hh\n- dune/localfunctions/refined/refinedp1.hh\n+ a00047.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.9.0/dune/localfunctions/refined/common/\n- a00026.html\n+ a00044.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.9.0/dune/localfunctions/refined/\n- a00023.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+ a00026.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.9.0/dune/localfunctions/refined/refinedp0/\n- a00011.html\n+ a00029.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.9.0/dune/localfunctions/refined/refinedp0/\n- a00017.html\n- dune/localfunctions/common/localkey.hh\n+ a00032.html\n+ dune/localfunctions/common/localkey.hh\n Dune::RefinedP0LocalCoefficients\n Dune\n \n \n refinedp0localinterpolation.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/refined/refinedp0/\n- a00014.html\n- dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh\n+ a00035.html\n+ dune/localfunctions/refined/refinedp0/refinedp0localbasis.hh\n dune/localfunctions/common/localinterpolation.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.9.0/dune/localfunctions/refined/\n- a00020.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+ a00041.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.9.0/dune/localfunctions/refined/refinedp1/\n- a00029.html\n- dune/localfunctions/refined/common/refinedsimplexlocalbasis.hh\n+ a00038.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.9.0/dune/localfunctions/utility/\n- a00476.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/multiindex.hh\n- dune/localfunctions/utility/tensor.hh\n+ a00215.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.9.0/dune/localfunctions/utility/\n- a00500.html\n- dune/localfunctions/utility/lfematrix.hh\n- dune/localfunctions/utility/monomialbasis.hh\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00221.html\n+ dune/localfunctions/utility/lfematrix.hh\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.9.0/dune/localfunctions/utility/\n- a00494.html\n- dune/localfunctions/utility/multiindex.hh\n- dune/localfunctions/utility/polynomialbasis.hh\n+ a00209.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.9.0/dune/localfunctions/utility/\n- a00461.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/tensor.hh\n+ a00182.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.9.0/dune/localfunctions/utility/\n- a00473.html\n- dune/localfunctions/utility/basismatrix.hh\n+ a00188.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.9.0/dune/localfunctions/utility/\n- a00485.html\n- dune/localfunctions/common/localkey.hh\n+ a00203.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.9.0/dune/localfunctions/utility/\n- a00488.html\n+ a00194.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.9.0/dune/localfunctions/utility/\n- a00482.html\n- dune/localfunctions/utility/field.hh\n+ a00200.html\n+ dune/localfunctions/utility/field.hh\n dune/localfunctions/common/localinterpolation.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.9.0/dune/localfunctions/utility/\n- a00491.html\n+ a00206.html\n dune/localfunctions/common/localinterpolation.hh\n- dune/localfunctions/utility/lfematrix.hh\n+ dune/localfunctions/utility/lfematrix.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.9.0/dune/localfunctions/utility/\n- a00464.html\n- field.hh\n+ a00212.html\n+ field.hh\n Dune::LFEMatrix\n Dune\n \n \n monomialbasis.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/utility/\n- a00497.html\n- dune/localfunctions/utility/field.hh\n- dune/localfunctions/utility/multiindex.hh\n- dune/localfunctions/utility/tensor.hh\n+ a00191.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@@ -1767,41 +1830,41 @@\n Dune::MonomialBasisProvider\n Dune::MonomialBasisProvider::EvaluationBasisFactory\n Dune\n \n \n multiindex.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/utility/\n- a00470.html\n- dune/localfunctions/utility/field.hh\n+ a00218.html\n+ dune/localfunctions/utility/field.hh\n Dune::MultiIndex\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.9.0/dune/localfunctions/utility/\n- a00479.html\n+ a00185.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.9.0/dune/localfunctions/utility/\n- a00467.html\n- dune/localfunctions/utility/field.hh\n+ a00197.html\n+ dune/localfunctions/utility/field.hh\n Dune::LFETensor\n Dune::LFETensor< F, 0, deriv >\n Dune::LFETensor< F, 0, 0 >\n Dune::LFETensor< F, dimD, 0 >\n Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::value >\n Dune::Derivatives< F, dimD, dimR, 0, DerivativeLayoutNS::value >\n Dune::Derivatives< F, dimD, dimR, deriv, DerivativeLayoutNS::derivative >\n@@ -1829,111 +1892,48 @@\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.9.0/dune/localfunctions/whitney/\n- a00203.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+ a00173.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.9.0/dune/localfunctions/meta/power/\n- a04476.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.9.0/dune/localfunctions/whitney/edges0.5/\n- a04479.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.9.0/dune/localfunctions/meta/power/\n- a04482.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.9.0/dune/localfunctions/whitney/edges0.5/\n- a04485.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.9.0/dune/localfunctions/whitney/edges0.5/\n- a00191.html\n+ a00176.html\n Dune::EdgeS0_5Common\n Dune\n \n \n- lagrange/interpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/lagrange/\n- a04488.html\n- dune/localfunctions/common/localinterpolation.hh\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.9.0/dune/localfunctions/meta/power/\n- a04491.html\n- dune/localfunctions/common/localinterpolation.hh\n- Dune::PowerInterpolation\n- Dune\n- \n- \n- whitney/edges0.5/interpolation.hh\n- /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/whitney/edges0.5/\n- a04494.html\n- dune/localfunctions/whitney/edges0.5/common.hh\n- dune/localfunctions/common/localinterpolation.hh\n- Dune::EdgeS0_5Interpolation\n- Dune\n- \n- \n localfunctions/utility/localfiniteelement.hh\n /build/reproducible-path/dune-localfunctions-2.9.0/dune/localfunctions/utility/\n a04497.html\n- dune/localfunctions/common/localfiniteelementtraits.hh\n- dune/localfunctions/utility/l2interpolation.hh\n- dune/localfunctions/utility/dglocalcoefficients.hh\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.9.0/dune/python/localfunctions/\n a04500.html\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\n Dune::Python\n \n \n Dune::MonomialEvaluator::BaseIterator\n a02605.html\n class Deriv\n"}]}]}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/files.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/files.html", "unified_diff": "@@ -77,254 +77,254 @@\n   doc\n  doxygen\n   dune\n   localfunctions\n   brezzidouglasfortinmarini\n   cube\n  localbasis.hh\n- localcoefficients.hh\n+ localcoefficients.hh\n  localinterpolation.hh\n- bdfmcube.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+ localfiniteelementtraits.hh\n+ localfiniteelementvariant.hh\n+ localfiniteelementvariantcache.hh\n  localinterpolation.hh\n- localkey.hh\n- localtoglobaladaptors.hh\n- virtualinterface.hh\n- virtualwrappers.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   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- hierarchicalp2.hh\n- hierarchicalp2withelementbubble.hh\n- hierarchicalprismp2.hh\n+ hierarchicalprismp2localbasis.hhHierarchical prism p2 shape functions for the simplex \n+ hierarchicalprismp2localinterpolation.hh\n+ hierarchicalp2.hh\n+ hierarchicalp2withelementbubble.hh\n+ hierarchicalprismp2.hh\n   lagrange\n   p0\n- p0localbasis.hh\n- p0localcoefficients.hh\n- p0localinterpolation.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- p1.hh\n- p2.hh\n- p23d.hh\n- pk.hh\n- pk1d.hh\n- pk2d.hh\n- pk3d.hh\n- pq22d.hh\n- pqkfactory.hh\n- prismp1.hh\n- prismp2.hh\n- pyramidp1.hh\n- pyramidp2.hh\n- q1.hh\n- q2.hh\n- qk.hh\n+ p0localbasis.hh\n+ p0localcoefficients.hh\n+ p0localinterpolation.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+ p1.hh\n+ p2.hh\n+ p23d.hh\n+ pk.hh\n+ pk1d.hh\n+ pk2d.hh\n+ pk3d.hh\n+ pq22d.hh\n+ pqkfactory.hh\n+ prismp1.hh\n+ prismp2.hh\n+ pyramidp1.hh\n+ pyramidp2.hh\n+ q1.hh\n+ q2.hh\n+ qk.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+ monomiallocalbasis.hh\n  monomiallocalcoefficients.hh\n- monomiallocalinterpolation.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- 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+ 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/a00017.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032.html", "comments": ["Files 96% similar despite different names"], "unified_diff": "@@ -78,17 +78,17 @@\n Namespaces \n
    refinedp0localcoefficients.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+

    Go to the source code of this file.

    \n \n \n \n \n \n

    \n Classes

    class  Dune::RefinedP0LocalCoefficients< k >
     Layout map for RefinedP0 elements. More...
     
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00017_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00032_source.html", "comments": ["Files 99% similar despite different names"], "unified_diff": "@@ -77,26 +77,26 @@\n
  • dune
  • localfunctions
  • refined
  • refinedp0
  • \n \n \n
    \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+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 (C) 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
    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
    23 template<unsigned int k>
    \n
    \n \n@@ -134,15 +134,15 @@\n
    52
    \n
    53 };
    \n
    \n
    54
    \n
    55}
    \n
    56
    \n
    57#endif
    \n-\n+\n
    Definition bdfmcube.hh:18
    \n
    Describe position of one degree of freedom.
    Definition localkey.hh:23
    \n
    Layout map for RefinedP0 elements.
    Definition refinedp0localcoefficients.hh:25
    \n
    RefinedP0LocalCoefficients()
    Definition refinedp0localcoefficients.hh:30
    \n
    std::size_t size() const
    number of coefficients
    Definition refinedp0localcoefficients.hh:39
    \n
    const LocalKey & localKey(std::size_t i) const
    get i'th index
    Definition refinedp0localcoefficients.hh:45
    \n
    \n"}, {"source1": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00020.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200.html", "comments": ["Files 89% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp1.hh File Reference\n+dune-localfunctions: interpolationhelper.hh File Reference\n \n \n \n \n \n \n \n@@ -65,36 +65,39 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    refinedp1.hh File Reference
    \n+
    interpolationhelper.hh File Reference
    \n
    \n
    \n \n-\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...
    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,25 +1,29 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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-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+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+#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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_\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+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/a00023.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00038.html", "comments": ["Files 85% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0.hh File Reference\n+dune-localfunctions: refinedp1localbasis.hh File Reference\n \n \n \n \n \n \n \n@@ -65,58 +65,54 @@\n
    \n \n \n \n \n \n \n
    \n \n-
    refinedp0.hh File Reference
    \n+
    refinedp1localbasis.hh File Reference
    \n
    \n
    \n \n-

    Piecewise P0 finite element. \n+

    Linear Lagrange shape functions on a uniformly refined reference 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 <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+

    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 Classes

    class  Dune::RefinedP0LocalFiniteElement< D, R, dim >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
    class  Dune::RefinedP1LocalBasis< D, R, dim >
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 1 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
    class  Dune::RefinedP1LocalBasis< D, R, 1 >
     Uniformly refined linear Lagrange shape functions in 1D. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 2 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
    class  Dune::RefinedP1LocalBasis< D, R, 2 >
     Uniformly refined linear Lagrange shape functions on the triangle. More...
     
    class  Dune::RefinedP0LocalFiniteElement< D, R, 3 >
     Local finite element that is piecewise P0 on a once uniformly refined reference geometry. More...
    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

    Detailed Description

    \n-

    Piecewise P0 finite element.

    \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,41 +1,37 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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 _\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+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-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+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_\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+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_\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+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_\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_\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-Piecewise P0 finite element.\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/a00023_source.html", "source2": "./usr/share/doc/libdune-localfunctions-doc/doxygen/a00200_source.html", "comments": ["Files 88% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n \n \n \n \n \n \n \n-dune-localfunctions: refinedp0.hh Source File\n+dune-localfunctions: interpolationhelper.hh Source File\n \n \n \n \n \n \n \n@@ -70,264 +70,215 @@\n
    \n
    \n \n \n \n \n \n
    \n-
    refinedp0.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+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 (C) 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 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-\n-\n-
    12
    \n-\n-\n-\n-
    16
    \n-
    20namespace Dune
    \n-
    21{
    \n-
    22
    \n-
    25 template<class D, class R, int dim>
    \n-
    \n-\n-
    27 {
    \n-\n-
    29
    \n-
    30 public:
    \n-
    31 // We steal the p0 traits since they exist for all dim.
    \n-
    32 // This allows to instantiate the type and access the Traits.
    \n-\n-
    34 };
    \n-
    \n-
    35
    \n-
    38 template<class D, class R>
    \n-
    \n-\n-
    40 {
    \n-
    41 public:
    \n-\n-\n-\n-\n-
    48
    \n-\n-
    53
    \n-
    \n-
    56 const typename Traits::LocalBasisType& localBasis () const
    \n-
    57 {
    \n-
    58 return basis_;
    \n-
    59 }
    \n-
    \n-
    60
    \n-
    \n-\n-
    64 {
    \n-
    65 return coefficients_;
    \n-
    66 }
    \n-
    \n-
    67
    \n-
    \n-\n-
    71 {
    \n-
    72 return interpolation_;
    \n-
    73 }
    \n-
    \n-
    74
    \n-
    \n-
    76 unsigned int size () const
    \n-
    77 {
    \n-
    78 return basis_.size();
    \n-
    79 }
    \n-
    \n-
    80
    \n-
    \n-
    83 static constexpr GeometryType type ()
    \n-
    84 {
    \n-
    85 return GeometryTypes::line;
    \n-
    86 }
    \n-
    \n-
    87
    \n-
    88 private:
    \n-\n-\n-\n-
    92 };
    \n-
    \n-
    93
    \n-
    96 template<class D, class R>
    \n-
    \n-\n-
    98 {
    \n-
    99 public:
    \n-\n-\n-\n-\n-
    106
    \n-\n-
    111
    \n-
    \n-
    114 const typename Traits::LocalBasisType& localBasis () const
    \n-
    115 {
    \n-
    116 return basis_;
    \n-
    117 }
    \n-
    \n-
    118
    \n-
    \n-\n-
    122 {
    \n-
    123 return coefficients_;
    \n-
    124 }
    \n-
    \n-
    125
    \n-
    \n-\n-
    129 {
    \n-
    130 return interpolation_;
    \n-
    131 }
    \n-
    \n-
    132
    \n-
    \n-
    134 unsigned int size () const
    \n-
    135 {
    \n-
    136 return basis_.size();
    \n-
    137 }
    \n-
    \n-
    138
    \n-
    \n-
    141 static constexpr GeometryType type ()
    \n-
    142 {
    \n-
    143 return GeometryTypes::triangle;
    \n-
    144 }
    \n-
    \n-
    145
    \n-
    146 private:
    \n-\n-
    148 RefinedP0LocalCoefficients<2> coefficients_;
    \n-\n-
    150 };
    \n-
    \n-
    151
    \n-
    154 template<class D, class R>
    \n-
    \n-\n-
    156 {
    \n-
    157 public:
    \n-\n-\n-\n-\n-
    164
    \n-\n-
    169
    \n-
    \n-
    172 const typename Traits::LocalBasisType& localBasis () const
    \n-
    173 {
    \n-
    174 return basis_;
    \n-
    175 }
    \n-
    \n-
    176
    \n-
    \n-\n-
    180 {
    \n-
    181 return coefficients_;
    \n-
    182 }
    \n-
    \n-
    183
    \n-
    \n-\n-
    187 {
    \n-
    188 return interpolation_;
    \n-
    189 }
    \n-
    \n-
    190
    \n-
    \n-
    192 unsigned int size () const
    \n-
    193 {
    \n-
    194 return basis_.size();
    \n-
    195 }
    \n-
    \n-
    196
    \n-
    \n-
    199 static constexpr GeometryType type ()
    \n-
    200 {
    \n-
    201 return GeometryTypes::tetrahedron;
    \n-
    202 }
    \n-
    \n-
    203
    \n-
    204 private:
    \n-\n-
    206 RefinedP0LocalCoefficients<3> coefficients_;
    \n-\n-
    208 };
    \n-
    \n-
    209
    \n-
    210
    \n-
    211}
    \n-
    212
    \n-
    213#endif
    \n-\n-\n-\n-\n-\n+
    10#include <dune/common/fvector.hh>
    \n+
    11#include <dune/common/concept.hh>
    \n+\n+\n+
    14
    \n+
    15namespace Dune
    \n+
    16{
    \n+
    17 // A small helper class to avoid having to
    \n+
    18 // write the interpolation twice (once for function
    \n+
    19 // and once for a basis)
    \n+
    20 template< class F, unsigned int dimension >
    \n+
    \n+\n+
    22 {
    \n+
    23 template <class Func,class Container, bool type>
    \n+
    24 struct Helper;
    \n+
    25 };
    \n+
    \n+
    26 template <class F,unsigned int d>
    \n+
    27 template <class Func,class Vector>
    \n+
    \n+
    28 struct InterpolationHelper<F,d>::Helper<Func,Vector,true>
    \n+
    29 // Func is of Function type
    \n+
    30 {
    \n+
    31 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n+
    \n+
    32 Helper(const Func & func, Vector &vec)
    \n+
    33 : func_(func),
    \n+
    34 vec_(vec),
    \n+
    35 tmp_(1)
    \n+
    36 {}
    \n+
    \n+
    \n+
    37 const typename Vector::value_type &operator()(unsigned int row,unsigned int col)
    \n+
    38 {
    \n+
    39 return vec_[row];
    \n+
    40 }
    \n+
    \n+
    41 template <class Fy>
    \n+
    \n+
    42 void set(unsigned int row,unsigned int col,
    \n+
    43 const Fy &val)
    \n+
    44 {
    \n+
    45 assert(col==0);
    \n+
    46 assert(row<vec_.size());
    \n+
    47 field_cast( val, vec_[row] );
    \n+
    48 }
    \n+
    \n+
    49 template <class Fy>
    \n+
    \n+
    50 void add(unsigned int row,unsigned int col,
    \n+
    51 const Fy &val)
    \n+
    52 {
    \n+
    53 assert(col==0);
    \n+
    54 assert(row<vec_.size());
    \n+
    55 vec_[row] += field_cast<typename Vector::value_type>(val);
    \n+
    56 }
    \n+
    \n+
    57 template <class DomainVector,
    \n+
    58 std::enable_if_t<models<Impl::FunctionWithCallOperator<DomainVector>, Func>(), int> = 0>
    \n+
    \n+
    59 const Result &evaluate(const DomainVector &x) const
    \n+
    60 {
    \n+
    61 field_cast(func_(x), tmp_[0] );
    \n+
    62 return tmp_;
    \n+
    63 }
    \n+
    \n+
    64 template <class DomainVector,
    \n+
    65 std::enable_if_t<not models<Impl::FunctionWithCallOperator<DomainVector>, Func>(), int> = 0>
    \n+
    \n+
    66 const Result &evaluate(const DomainVector &x) const
    \n+
    67 {
    \n+
    68 typename Func::DomainType xx ;
    \n+
    69 typename Func::RangeType ff ;
    \n+
    70 field_cast(x,xx);
    \n+
    71 func_.evaluate(xx,ff);
    \n+
    72 field_cast(ff, tmp_[0] );
    \n+
    73 return tmp_;
    \n+
    74 }
    \n+
    \n+
    \n+
    75 unsigned int size() const
    \n+
    76 {
    \n+
    77 return 1;
    \n+
    78 }
    \n+
    \n+
    79 const Func &func_;
    \n+
    80 Vector &vec_;
    \n+
    81 mutable Result tmp_;
    \n+
    82 };
    \n+
    \n+
    83 template <class F,unsigned int d>
    \n+
    84 template <class Basis,class Matrix>
    \n+
    \n+
    85 struct InterpolationHelper<F,d>::Helper<Basis,Matrix,false>
    \n+
    86 // Func is of Basis type
    \n+
    87 {
    \n+
    88 typedef std::vector< Dune::FieldVector<F,d> > Result;
    \n+
    \n+
    89 Helper(const Basis & basis, Matrix &matrix)
    \n+
    90 : basis_(basis),
    \n+
    91 matrix_(matrix),
    \n+
    92 tmp_(basis.size()) {}
    \n+
    \n+
    \n+
    93 const F &operator()(unsigned int row,unsigned int col) const
    \n+
    94 {
    \n+
    95 return matrix_(row,col);
    \n+
    96 }
    \n+
    \n+
    \n+
    97 F &operator()(unsigned int row,unsigned int col)
    \n+
    98 {
    \n+
    99 return matrix_(row,col);
    \n+
    100 }
    \n+
    \n+
    101 template <class Fy>
    \n+
    \n+
    102 void set(unsigned int row,unsigned int col,
    \n+
    103 const Fy &val)
    \n+
    104 {
    \n+
    105 assert(col<matrix_.cols());
    \n+
    106 assert(row<matrix_.rows());
    \n+
    107 field_cast(val,matrix_(row,col));
    \n+
    108 }
    \n+
    \n+
    109 template <class Fy>
    \n+
    \n+
    110 void add(unsigned int row,unsigned int col,
    \n+
    111 const Fy &val)
    \n+
    112 {
    \n+
    113 assert(col<matrix_.cols());
    \n+
    114 assert(row<matrix_.rows());
    \n+
    115 matrix_(row,col) += val;
    \n+
    116 }
    \n+
    \n+
    117 template <class DomainVector>
    \n+
    \n+
    118 const Result &evaluate(const DomainVector &x) const
    \n+
    119 {
    \n+
    120 basis_.template evaluate<0>(x,tmp_);
    \n+
    121 return tmp_;
    \n+
    122 }
    \n+
    \n+
    \n+
    123 unsigned int size() const
    \n+
    124 {
    \n+
    125 return basis_.size();
    \n+
    126 }
    \n+
    \n+
    127
    \n+
    128 const Basis &basis_;
    \n+
    129 Matrix &matrix_;
    \n+
    130 mutable Result tmp_;
    \n+
    131 };
    \n+
    \n+
    132}
    \n+
    133#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-
    Local finite element that is piecewise P0 on a once uniformly refined reference geometry.
    Definition refinedp0.hh:27
    \n-
    P0LocalFiniteElement< D, R, dim >::Traits Traits
    Definition refinedp0.hh:33
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:56
    \n-
    static constexpr GeometryType type()
    Definition refinedp0.hh:83
    \n-
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:51
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:70
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:63
    \n-
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 1 >, RefinedP0LocalCoefficients< 1 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 1 > > > Traits
    Definition refinedp0.hh:47
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:76
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:134
    \n-
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:109
    \n-
    static constexpr GeometryType type()
    Definition refinedp0.hh:141
    \n-
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 2 >, RefinedP0LocalCoefficients< 2 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 2 > > > Traits
    Definition refinedp0.hh:105
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:121
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:128
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:114
    \n-
    RefinedP0LocalFiniteElement()
    Definition refinedp0.hh:167
    \n-
    const Traits::LocalBasisType & localBasis() const
    Definition refinedp0.hh:172
    \n-
    const Traits::LocalInterpolationType & localInterpolation() const
    Definition refinedp0.hh:186
    \n-
    static constexpr GeometryType type()
    Definition refinedp0.hh:199
    \n-
    unsigned int size() const
    Number of shape functions in this finite element.
    Definition refinedp0.hh:192
    \n-
    const Traits::LocalCoefficientsType & localCoefficients() const
    Definition refinedp0.hh:179
    \n-
    LocalFiniteElementTraits< RefinedP0LocalBasis< D, R, 3 >, RefinedP0LocalCoefficients< 3 >, RefinedP0LocalInterpolation< RefinedP0LocalBasis< D, R, 3 > > > Traits
    Definition refinedp0.hh:163
    \n-
    Uniformly refined constant shape functions on a unit simplex in R^dim.
    Definition refinedp0localbasis.hh:40
    \n-
    Layout map for RefinedP0 elements.
    Definition refinedp0localcoefficients.hh:25
    \n-
    Definition refinedp0localinterpolation.hh:15
    \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:22
    \n+
    Definition interpolationhelper.hh:24
    \n+
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:50
    \n+
    const Func & func_
    Definition interpolationhelper.hh:79
    \n+
    Helper(const Func &func, Vector &vec)
    Definition interpolationhelper.hh:32
    \n+
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:59
    \n+
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:31
    \n+
    unsigned int size() const
    Definition interpolationhelper.hh:75
    \n+
    Vector & vec_
    Definition interpolationhelper.hh:80
    \n+
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:42
    \n+
    Result tmp_
    Definition interpolationhelper.hh:81
    \n+
    const Vector::value_type & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:37
    \n+
    const Basis & basis_
    Definition interpolationhelper.hh:128
    \n+
    const Result & evaluate(const DomainVector &x) const
    Definition interpolationhelper.hh:118
    \n+
    F & operator()(unsigned int row, unsigned int col)
    Definition interpolationhelper.hh:97
    \n+
    void set(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:102
    \n+
    Helper(const Basis &basis, Matrix &matrix)
    Definition interpolationhelper.hh:89
    \n+
    unsigned int size() const
    Definition interpolationhelper.hh:123
    \n+
    Result tmp_
    Definition interpolationhelper.hh:130
    \n+
    void add(unsigned int row, unsigned int col, const Fy &val)
    Definition interpolationhelper.hh:110
    \n+
    std::vector< Dune::FieldVector< F, d > > Result
    Definition interpolationhelper.hh:88
    \n+
    Matrix & matrix_
    Definition interpolationhelper.hh:129
    \n+
    const F & operator()(unsigned int row, unsigned int col) const
    Definition interpolationhelper.hh:93
    \n+\n
    \n \n
    \n Generated by \"doxygen\"/ 1.9.8\n
    \n \n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,281 +1,223 @@\n dune-localfunctions\u00a02.9.0\n Loading...\n Searching...\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+ * _\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 (C) 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 GENERIC_INTERPOLATIONHELPER_HH\n+6#define GENERIC_INTERPOLATIONHELPER_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-25 template\n-_\b2_\b6 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-27 {\n-28 _\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 public:\n-31 // We steal the p0 traits since they exist for all dim.\n-32 // This allows to instantiate the type and access the Traits.\n-_\b3_\b3 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-34 };\n-35\n-38 template\n-_\b3_\b9 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-40 {\n-41 public:\n-44 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-45 _\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-46 _\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-_\b4_\b7 _\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-48\n-_\b5_\b1 _\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-52 {}\n-53\n-_\b5_\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-57 {\n-58 return basis_;\n-59 }\n-60\n-_\b6_\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-64 {\n-65 return coefficients_;\n-66 }\n-67\n-_\b7_\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-71 {\n-72 return interpolation_;\n-73 }\n-74\n-_\b7_\b6 unsigned int _\bs_\bi_\bz_\be () const\n-77 {\n-78 return basis_.size();\n-79 }\n-80\n-_\b8_\b3 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-84 {\n-85 return GeometryTypes::line;\n-86 }\n-87\n-88 private:\n-89 _\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-90 _\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-91 _\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-92 };\n-93\n-96 template\n-_\b9_\b7 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+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#include <_\bd_\bu_\bn_\be_\b/_\bl_\bo_\bc_\ba_\bl_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs_\b/_\bc_\bo_\bm_\bm_\bo_\bn_\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+17 // A small helper class to avoid having to\n+18 // write the interpolation twice (once for function\n+19 // and once for a basis)\n+20 template< class F, unsigned int dimension >\n+_\b2_\b1 struct _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bH_\be_\bl_\bp_\be_\br\n+22 {\n+23 template \n+_\b2_\b4 struct _\bH_\be_\bl_\bp_\be_\br;\n+25 };\n+26 template \n+27 template \n+_\b2_\b8 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+29 // Func is of Function type\n+30 {\n+_\b3_\b1 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n+_\b3_\b2 _\bH_\be_\bl_\bp_\be_\br(const Func & func, Vector &vec)\n+33 : func_(func),\n+34 vec_(vec),\n+35 tmp_(1)\n+36 {}\n+_\b3_\b7 const typename Vector::value_type &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int\n+col)\n+38 {\n+39 return vec_[row];\n+40 }\n+41 template \n+_\b4_\b2 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n+43 const Fy &val)\n+44 {\n+45 assert(col==0);\n+46 assert(row\n+_\b5_\b0 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n+51 const Fy &val)\n+52 {\n+53 assert(col==0);\n+54 assert(row(val);\n+56 }\n+57 template , Func>\n+(), int> = 0>\n+_\b5_\b9 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n+60 {\n+61 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(func_(x), tmp_[0] );\n+62 return tmp_;\n+63 }\n+64 template ,\n+Func>(), int> = 0>\n+_\b6_\b6 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n+67 {\n+68 typename Func::DomainType xx ;\n+69 typename Func::RangeType ff ;\n+70 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(x,xx);\n+71 func_.evaluate(xx,ff);\n+72 _\bf_\bi_\be_\bl_\bd_\b__\bc_\ba_\bs_\bt(ff, tmp_[0] );\n+73 return tmp_;\n+74 }\n+_\b7_\b5 unsigned int _\bs_\bi_\bz_\be() const\n+76 {\n+77 return 1;\n+78 }\n+_\b7_\b9 const Func &_\bf_\bu_\bn_\bc_\b_;\n+_\b8_\b0 Vector &_\bv_\be_\bc_\b_;\n+_\b8_\b1 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n+82 };\n+83 template \n+84 template \n+_\b8_\b5 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+86 // Func is of Basis type\n+87 {\n+_\b8_\b8 typedef std::vector< Dune::FieldVector > _\bR_\be_\bs_\bu_\bl_\bt;\n+_\b8_\b9 _\bH_\be_\bl_\bp_\be_\br(const Basis & basis, Matrix &matrix)\n+90 : basis_(basis),\n+91 matrix_(matrix),\n+92 tmp_(basis.size()) {}\n+_\b9_\b3 const F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col) const\n+94 {\n+95 return matrix_(row,col);\n+96 }\n+_\b9_\b7 F &_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b(_\b)(unsigned int row,unsigned int col)\n 98 {\n-99 public:\n-102 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-103 _\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-104 _\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_\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_\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-106\n-_\b1_\b0_\b9 _\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-110 {}\n-111\n-_\b1_\b1_\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-115 {\n-116 return basis_;\n-117 }\n-118\n-_\b1_\b2_\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-122 {\n-123 return coefficients_;\n-124 }\n-125\n-_\b1_\b2_\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-129 {\n-130 return interpolation_;\n-131 }\n-132\n-_\b1_\b3_\b4 unsigned int _\bs_\bi_\bz_\be () const\n-135 {\n-136 return basis_.size();\n-137 }\n-138\n-_\b1_\b4_\b1 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-142 {\n-143 return GeometryTypes::triangle;\n-144 }\n-145\n-146 private:\n-147 _\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-148 _\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-149 _\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-150 };\n-151\n-154 template\n-_\b1_\b5_\b5 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-156 {\n-157 public:\n-160 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-161 _\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-162 _\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_\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_\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-164\n-_\b1_\b6_\b7 _\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-168 {}\n-169\n-_\b1_\b7_\b2 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-173 {\n-174 return basis_;\n-175 }\n-176\n-_\b1_\b7_\b9 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-180 {\n-181 return coefficients_;\n-182 }\n-183\n-_\b1_\b8_\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-187 {\n-188 return interpolation_;\n-189 }\n-190\n-_\b1_\b9_\b2 unsigned int _\bs_\bi_\bz_\be () const\n-193 {\n-194 return basis_.size();\n-195 }\n-196\n-_\b1_\b9_\b9 static constexpr GeometryType _\bt_\by_\bp_\be ()\n-200 {\n-201 return GeometryTypes::tetrahedron;\n-202 }\n-203\n-204 private:\n-205 _\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-206 _\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-207 _\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-208 };\n-209\n-210\n-211}\n-212\n-213#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-_\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-_\bl_\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_\b._\bh_\bh\n+99 return matrix_(row,col);\n+100 }\n+101 template \n+_\b1_\b0_\b2 void _\bs_\be_\bt(unsigned int row,unsigned int col,\n+103 const Fy &val)\n+104 {\n+105 assert(col\n+_\b1_\b1_\b0 void _\ba_\bd_\bd(unsigned int row,unsigned int col,\n+111 const Fy &val)\n+112 {\n+113 assert(col\n+_\b1_\b1_\b8 const _\bR_\be_\bs_\bu_\bl_\bt &_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be(const DomainVector &x) const\n+119 {\n+120 basis_.template evaluate<0>(x,tmp_);\n+121 return tmp_;\n+122 }\n+_\b1_\b2_\b3 unsigned int _\bs_\bi_\bz_\be() const\n+124 {\n+125 return basis_.size();\n+126 }\n+127\n+_\b1_\b2_\b8 const Basis &_\bb_\ba_\bs_\bi_\bs_\b_;\n+_\b1_\b2_\b9 Matrix &_\bm_\ba_\bt_\br_\bi_\bx_\b_;\n+_\b1_\b3_\b0 mutable _\bR_\be_\bs_\bu_\bl_\bt _\bt_\bm_\bp_\b_;\n+131 };\n+132}\n+133#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_\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:27\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:33\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:56\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:83\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: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:_\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:70\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:63\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:47\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+_\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:22\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:24\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:50\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:79\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:32\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:59\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: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:_\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:76\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+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 _\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:80\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:42\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:81\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:37\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:128\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:118\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: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:_\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:102\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: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:_\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: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:_\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:109\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:141\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:105\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:121\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:128\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:114\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:167\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:172\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:186\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:199\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:192\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:179\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:163\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: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\n-Layout map for RefinedP0 elements.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn refinedp0localcoefficients.hh:25\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:15\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn interpolationhelper.hh:123\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:130\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: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:_\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:88\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:129\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:93\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"}]}]}]}]}]}